氣泡排序法 (Bubble Sort)

最經典的入門排序演算法

回到首頁

1. 操作原理

氣泡排序法透過重複走訪要排序的數列,依序比較相鄰元素,若前者大於後者就交換。每一輪結束時,未排序區間的最大值會像氣泡一樣浮到最右邊。

重點:氣泡排序是一種穩定原地排序的方法。
核心流程為:比較相鄰元素交換位置,並讓最大值像氣泡一樣逐步浮到右側。

2. 時間及空間複雜度

情況 時間複雜度 空間複雜度 說明 難易度
最佳 O(n) O(1) 陣列已排序且無需交換時,演算法可於第一輪偵測到並提早結束。 簡單
平均 O(n²) O(1) 隨機資料需要多次比較與交換,通常需進行約 n²/2 次比較。 中等
最壞 O(n²) O(1) 陣列完全反序時,需進行最多次比較與交換才能完成排序。 困難
空間 O(1) 使用原地交換,不額外配置大型陣列,空間效率高。
穩定性 穩定 相等元素的相對順序不會改變,適合需要穩定排序的場景。

3. 互動視覺化

中等
0
步驟數
0
比較次數
0
交換次數
準備就緒 - 請載入或產生陣列
未排序
比較中
交換中
已排序

📝 步驟紀錄

4. 偽代碼及實作範例

// 偽代碼 for i := 0 to n - 2 swapped := false for j := 0 to n - i - 2 if A[j] > A[j + 1] swap(A[j], A[j + 1]) swapped := true if not swapped break // JavaScript 範例 function bubbleSort(arr) { const n = arr.length; for (let i = 0; i < n - 1; i++) { let swapped = false; for (let j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]; swapped = true; } } if (!swapped) break; } return arr; }