首頁>技術>

基本思想: 比較兩個相鄰的元素,將值大的元素交換到右邊,雪碧中常常有許多小小的氣泡,往上飄,這是因為組成小氣泡的二氧化碳比水要輕,所以小氣泡才會一點一點的向上浮。而氣泡排序之所以叫氣泡排序直觀表達,每一趟遍歷,將一個最大的數移到序列末尾。

動圖實現,(來源參考資料)

演算法描述

比較相鄰的元素,如果前一個比後一個大,交換之。

第一趟排序第1個和第2個一對,比較與交換,隨後第2個和第3個一對比較交換,這樣直到倒數第2個和最後1個,將最大的數移動到最後一位。第二趟將第二大的數移動至倒數第二位......因此需要n-1趟

程式碼實現

public class BubbleSortMain {    public static void main(String[] args) {        Integer[] arr = {2,5,1,3,8,5,7,4,3};        System.out.println(Arrays.deepToString(arr));  // 排序前        sortBubble(arr);        System.out.println(Arrays.deepToString(arr)); // 排序後    }    // 冒泡方法    private static void sortBubble(Integer[] arr) {        if (arr==null||arr.length<2){            return;        }        for (int i=0;i<arr.length-1;i++){            for (int j=0;j<arr.length-i-1;j++){                if (arr[j]>arr[j+1]){                    int temp= arr[j];                    arr[j]=arr[j+1];                    arr[j+1]=temp;                }            }        }    }}

氣泡排序時間複雜度

氣泡排序的時間複雜度是O(N2)。假設被排序的數列中有N個數。遍歷一趟的時間複雜度是O(N),需要遍歷多少次呢?N-1次!因此,氣泡排序的時間複雜度是O(N2)。

氣泡排序穩定性

氣泡排序是穩定的演算法,它滿足穩定演算法的定義。演算法穩定性 -- 假設在數列中存在a[i]=a[j],若在排序之前,a[i]在a[j]前面;並且排序之後,a[i]仍然在a[j]前面。則這個排序演算法是穩定的!

6
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Java,設計模式,結構型,外觀模式,對外提供一個一致的介面