一、冒泡排序的原理
冒泡排序:將待排序的一組數分爲有序區間和無序區間。先在無序區間通過相鄰數的比較,將無序區間的最大數依次冒泡到最上面,持續這個過程,直到整組數有序。
二、圖解分析
以[3, 0, 5, 4, 1, 2]爲例,進行冒泡排序。
第一趟:從下往上依次兩兩比較,將最大數交換到最上面,第一趟完成後橙色部分爲已排好的部分。
第二趟:比較方法同上,橙色部分爲排好的區間,我們發現有序區間比第一趟的有序區間多一個數。
第三趟:
第四趟:
第五趟:
最後排好的整組數:
我們發現,每次排好序的區間數的個數都比前一趟多一個,所以待排序的6個數共循環了5次。
三、代碼實現
public static void bubbleSort(int[] array) {
for(int bound = 0; bound < array.length - 1; bound++) { //外層循環(數組長度-1)次
for(int cur = 0; cur < array.length - 1 -bound; cur++) { //內層循環,有序區間不用再循環
if (array[cur] > array[cur + 1]) {
int tmp = array[cur];
array[cur] = array[cur + 1];
array[cur + 1] = tmp;
}
}
}
}