思想比较简单
一直循环,每次把最小的元素冒泡到最后。(最差情况:循环n-1次,每次两两交换n次)
<span style="white-space:pre"> </span>private static void bubbleSort2(int a[]) {
a = getAry(a);
boolean flag = true;
Arrays.sort(a);
System.out.println(convertAry(a));
while (flag) {
flag = false;
for (int j = 0; j < a.length - 1; j++) {
if (a[j] > a[j + 1]) {
flag = true;
a[j] = a[j] ^ a[j + 1];// 按位异或
a[j + 1] = a[j] ^ a[j + 1];
a[j] = a[j] ^ a[j + 1];
}
}
System.out.println("第" + "" + "次: " + convertAry(a));
}
}
sort before
[12, 4, 5, 4, 13, 10, 10, 11, 8, 10]
第1次: [12, 5, 4, 13, 10, 10, 11, 8, 10, 4]
第2次: [12, 5, 13, 10, 10, 11, 8, 10, 4, 4]
第3次: [12, 13, 10, 10, 11, 8, 10, 5, 4, 4]
第4次: [13, 12, 10, 11, 10, 10, 8, 5, 4, 4]
第5次: [13, 12, 11, 10, 10, 10, 8, 5, 4, 4]
第6次: [13, 12, 11, 10, 10, 10, 8, 5, 4, 4]
第7次: [13, 12, 11, 10, 10, 10, 8, 5, 4, 4]
第8次: [13, 12, 11, 10, 10, 10, 8, 5, 4, 4]
第9次: [13, 12, 11, 10, 10, 10, 8, 5, 4, 4]