Я хотел бы знать, как еще я могу оптимизировать сортировку пузырьков, чтобы она пропускала элементы, которые уже были отсортированы даже после первого прохода.
Eg. [4, 2, 3, 1, 5, 6] --> [2, 3, 1, **4, 5, 6**]
Заметим, что [4,5,6] уже отсортированы по порядку, как изменить мой код так, чтобы он пропускал эти 3 элемента в следующем проходе? (что означает, что сортировка будет более эффективной?) Вы предлагаете рекурсивный метод?
public static void bubblesort(int[] a) {
for(int i=1; i<a.length; i++) {
boolean is_sorted = true;
for(int j=0; j<a.length; j++) {
if(a[j] > a[j+1]) {
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
is_sorted = false;
}
}
if(is_sorted) return;
}
}
Спасибо за ваше время!