Java排序之:升級版的冒泡排序

冒泡排序是一種基礎的算法排序

普通的冒泡排序就是相鄰兩個元素進行比較,符合條件進行交換,每一輪比較找出最大值或是最小值,其複雜度爲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;
}
}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章