Похоже, что ответ на этот вопрос еще не принят. Поэтому пытаюсь проверить, не является ли это проблемой.
Вот что, по моему мнению, может быть возможной реализацией на Java. Как отметил @Warlord, алгоритм должен гарантировать, что массив, вызывающий озабоченность при сортировке, представлен как вертикальный массив. С каждым проходом все, что мы делаем, это проверить, есть ли более крупный элемент ниже, и если обнаружено, что элемент пузырится вверх.
static void bubbleUpSort(int[] arr){
final int N = arr.length;
int tmp = 0;
for (int i=0; i < N; i++){
for (int j=N-1; j >= i+1; j--){
if (arr[j] < arr[j-1]){
tmp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = tmp;
}
}
}
for (int k =0; k < arr.length; k++){
System.out.print(arr[k] + " ");
}
}
Вызывается из главного как:
public static void main(String[] args) {
System.out.println("Bubble Up Sort");
int[] bUp = {19, 2, 9, 4, 7, 12, 13, 3, 6};
bubbleUpSort(bUp);
}
Обратите внимание, что, по вашему требованию, первый проход принесет наименьший элемент в первой позиции. Таким образом, пропуск «Bubble down», а не вверх. –