定義
過程中,會將兩個數字兩兩比較,將比較大的直接換到較後面的位置,就像氣泡一樣,慢慢的從底部浮現出來,因此取名氣泡排序法。
流程如下
- 比較相鄰兩個元素,將兩個相鄰的元素較大的放後面,較小的放前面
- 重複第一個動作,直到沒有元素需要比較為止
特性
- 穩定的排序方式 => 相同鍵值的元素,排序之後相對位置不改變
- 原地排序 => 不需花費額外的空間來儲存排序結果
時間複雜度
- 最佳時間(Best Case) : O(n) => 資料剛好順序由小到大
- 最差狀態(Worst Case): O(n^2) =>順序剛好由大到小,每一個都需要排序的時候
- 每回合執行: n-1, n-2 …..1 次 => (n-1)+ (n-2) +…..+ 1 = n(n-1)/2 => O(n^2)
- 平均時間(Average Case) :O(n^2) => 第 N 筆資料,平均比較(n-1)/2 次
範例
[1,43,6,79,50,2]
第一次疊代
|
|
這樣最大的已經被換到最後面去了
第二次疊代
|
|
第三次疊代
|
|
第四次疊代
|
|
第五次疊代
|
|
就排序完成了
實作 Golang
|
|