冒泡排序
先上代碼
public static void sort(int[] array) {
for(int i = 0;i<array.length-1;i++) {
for(int j = i+1;j<array.length;j++) {
if(array[i]>array[j]) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
//打印
for(int i = 0;i<array.length;i++) {
System.out.println(array[i]);
}
}
思路:
重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。
即比較兩個相鄰的元素,將值大的元素交換到右邊,如果遇到相等的值不進行交換,那這種排序方式是穩定的排序方式。
假使有個數組
16,6,27,14,9;
第一趟排序:
第一次排序:16和6進行比較 16>6 交換位置 【6,16,27,14,9】
第二次排序:16和27進行比較 16<27不交換位置【6,16,27,14,9】
第三次排序:27和14進行比較 27>14 交換位置【6,16,14,27,9】
第四次排序:27和9比較 27>9 交換位置【6,16,14,9,27】
第二趟排序:
第一次排序:6和16進行比較 不 交換位置 【6,16,14,9,27】
第二次排序:16和14進行比較 16>14交換位置【6,14,16,9,27】
第三次排序:16和9進行比較 16>9 交換位置【6,14,9,16,27】
第三趟排序:
第一次排序:6和14進行比較 6<14 不交換位置【6,14,9,16,27】
第二次排序:14和9進行比較 14>9 交換位置【6,9,14,16,27】
第四趟排序:
第一次排序:6和14進行比較 6<14 不交換位置【6,9,14,16,27】
總結:
N個數字要排序完成,總共進行N-1趟排序,每i趟的排序次數爲(N-i)次,所以可以用雙重循環語句,外層控制循環多少趟,內層控制每一趟的循環次數