1. 程式人生 > >Java語言氣泡排序法

Java語言氣泡排序法

首先我們定義一個數組

int[] array = { 11, 55, 22, 53, 87, 13, 66, 90 };

下標為0~7

陣列下表為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 + " ");
		}
	}

}

在這裡插入圖片描述