選擇排序法是一種簡單的排序演算法。它會在未排序的序列中找到最小(或最大)元素,存放到排序序列的起始位置,然後再從剩餘未排序元素中繼續尋找最小元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
| 項目 | 複雜度 | 說明 |
|---|---|---|
| 最壞時間複雜度 | O(n²) | 無論輸入資料如何 |
| 平均時間複雜度 | O(n²) | 隨機排序的情況 |
| 最佳時間複雜度 | O(n²) | 即使已排序也需完整比較 |
| 空間複雜度 | O(1) | 只需常數大小的額外空間 |
function selectionSort(arr) {
const n = arr.length;
for (let i = 0; i < n - 1; i++) {
let minIndex = i;
// 找到未排序部分的最小元素索引
for (let j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// 將最小元素交換到第 i 個位置
if (minIndex !== i) {
[arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];
}
}
return arr;
}