Java語言氣泡排序法
阿新 • • 發佈:2018-12-21
首先我們定義一個數組
int[] array = { 11, 55, 22, 53, 87, 13, 66, 90 };
陣列下表為0~7,共8位數
首先我們對array[0]與array[1]進行比較,如果array[0]>array[1],那麼大的值放在後面,互換位置。同理:array[1]與array[2]進行比較,一直到array[6]與array[7]比較完成,第一輪比較與位置調換完成。
所以程式碼是從a[j] 與a[j+1]之間的比較
紅線一共比較了7次,最大的值會在尾數
for (int j = 0; j < array.length ; j++) { if (array[j] > array[j + 1]) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } }
這塊程式碼應該不難理解
單次比較我們已經完成了,最大的數在末尾,所以進行第二次迴圈比較的時候我們可以拋開末尾數不在進行比較,那麼第二次我們就比較了6次。第三次只需要比較5次,第四次只要比較4次 以此類推…
接下來我們寫比較輪次 即外部迴圈
for (int i = 0; i < array.length; i++) {
}
接下來的就是氣泡排序陣列實現的關鍵點:
我們要找出外部迴圈與內層下表的關係,當第0次開始比較的時候,我們內部操作比較了7次 即 0 - 7; 第一次內部操作了6次 1-6;第二次內部比較5次 2-5 一次類推
所以第i次我們判斷截止為 8-i-1;
綜上:
package Day04; public class Demo07 { public static void main(String[] args) { int[] array = new int[] { 11, 55, 22, 53, 87, 13, 66, 90 }; int temp = 0; for (int i = 0; i < array.length; i++) { for (int j = 0; j < array.length - i - 1; j++) { if (array[j] > array[j + 1]) { temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } for (int a : array) { System.out.print(a + " "); } } }