Java排序之:升級版的氣泡排序
阿新 • • 發佈:2018-12-25
氣泡排序是一種基礎的演算法排序
普通的氣泡排序就是相鄰兩個元素進行比較,符合條件進行交換,每一輪比較找出最大值或是最小值,其複雜度為n的平方
int arr[]={23,12,46,24,76};
// 氣泡排序
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i; j < arr.length - 1; j++) {
if (arr[j] < arr[j + 1]) {
int t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
System.out.print("i=" + i + "的第j=" + j + "次交換\t");
for (int d = 0; d < arr.length; d++) {
System.out.print(arr[d] + "\t");
}
System.out.println();
}
}
升級版的氣泡排序,定義一個boolean變數,當沒有需要交換時,就跳出迴圈,節省了多餘的比較次數;
int array[] = { 23, 12, 46, 24, 87, 65, 18, 14, 43, 434, 65, 76 };int length = array.length;
for (boolean sorted = false; sorted = !sorted; length --) {
for (int i = 1; i < length; i++) {
if (array[i-1] > array[i]) {
int a = array[i-1];
array[i-1] = array[i];
array[i] = a;
sorted = false;
}
}
}