1. 程式人生 > 實用技巧 >Guava集合--強大的集合工具類

Guava集合--強大的集合工具類

氣泡排序,顧名思義,就是像氣泡一樣往上冒。

升序排序為例,從第一個數字開始,往向他後面的一個數字比較,如果前者大後者小,就交換,否則,不動,指標後移。依次類推

先來第一趟排序

用於示例的原始資料是:[5, 6, 1, 3, 4]

for (int i = 0; i < arr.length - 1; i++) {
            if (arr[i] > arr[i + 1]){
                temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i+1] = temp;
            }
        }
        System.
out.println("第一趟排序後的結果:"); System.out.println(Arrays.toString(arr));

for (int j = 0; j < arr.length - 2; j++) {
            if(arr[j] > arr[j+1]){
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
        System.
out.println("第二趟排序的結果是"); System.out.println(Arrays.toString(arr));

依次類推,每次都能確定一個數,因為是升序,所以每次都能確定一個最大的數排到他該去的位置上,相對的,需要排序的元素個數也會減少

尋找規律可以得到氣泡排序的總方法:

public static int [] Bubblesort(int [] array){
        int item;
        for (int i = 1; i < array.length; i++) {
            for (int j = 0
; j < array.length - i; j++) { if (array[j] > array[j+1]) { item = array[j]; array[j] = array[j + 1]; array[j + 1] = item; } } } return array; }

優化:

那如果直接就給了一個有序的陣列呢,咋辦,還要一邊一邊的去比的話不是就浪費時間了嗎?

因此,提出氣泡排序的優化演算法,其實很簡單

定義一個flag初始值設為false,放到演算法的交換部分裡面去,如果進行了交換,就把值設定為true,說明進行過了比較,那就看flag就行了,如果從前往後比較,一個數都沒有交換,那麼OK,就是有序的陣列了已經,直接返回就行了。