自學者以 100,000 筆隨機整數測試三種 O(n²) 排序,結果:
影片教學常稱「插入優於選擇」,實測卻相反,令人困惑。
三者皆為 O(n²),但資料移動次數、比較次數、分支預測友善度不同:
| 演算法 | 比較次數 | 交換/移動次數 | 最佳情況 | 最壞情況 |
|---|---|---|---|---|
| 選擇排序 | 固定 n(n-1)/2 | 最多 n-1 次交換 | O(n²) | O(n²) |
| 插入排序 | 約 n²/4(隨機) | 約 n²/4 次移動 | O(n)(近乎有序) | O(n²) |
| 冒泡排序 | 約 n²/2 | 約 n²/2 次交換 | O(n)(有序) | O(n²) |
實務上應直接使用 Arrays.sort()(雙軸快排)或 Collections.sort()(TimSort),平均 O(n log n),大幅優於 O(n²)。