我想知道我还能如何优化冒泡排序,以便它忽略已经排序的元素,即使在第一遍之后也是如此。
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;
}
}