選擇排序(Selection Sort)
選擇排序是一種排序算法,是一個占用常用內存(In-place)的排序方法。時間復雜度為O(n2)。通常情況下,在處理大型數據的時候,性能要比相似的插入排序低。選擇排序因其簡單性而著稱,并且在某些情況下性能要優于更復雜的算法,尤其是在輔助存儲空間有限的情況下。
原理
選擇排序的工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,然后,再從剩余未排序元素中繼續尋找最小(大)元素,然后放到已排序序列的末尾。以此類推,直到全部待排序的數據元素排完。
選擇排序(Selection Sort)
選擇排序(Selection Sort)
復雜度
算法 | 最好情況 | 平均情況 | 最壞情況 | 空間復雜度 | 穩定性 |
---|---|---|---|---|---|
選擇排序 | O(n2) | O(n2) | O(n2) | O(1) | 不穩定 |
ES6實現
function SelectionSort(originalArray) {
const array = [...originalArray];
let len = array.length;
for (let i = 0; i < len - 1; i++) {
let minIndex = i;
for (let j = i + 1; j < len; j++) {
if (array[j] < array[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
[array[minIndex], array[i]] = [array[i], array[minIndex]]
}
}
return array;
}
參考
相關閱讀
JavaScript的排序算法——冒泡排序
JavaScript的排序算法——選擇排序
JavaScript的排序算法——插入排序
JavaScript的排序算法——歸并排序
JavaScript的排序算法——快速排序