前言
Selection Sort 和 Bubble Sort 一樣,都是基本的排序法,時間複雜度都是 $O(n^2)$,屬於 unstable sorting
概念
Selection Sort 就是每次選最小的值然後不斷和 array 的第一個值做交換,Bubble Sort 則是兩兩一直交換
因為是不斷選擇最小的值放到最前面,所以每次迴圈都會少一個搜尋,因為前面已經排好了
流程大致如下:
- 找最小的值
- 把最小的值和目前 array 的第一個值做交換
- 從剩下的 array 重複 1 和 2 的過程
pseudo code
1 | SelectionSort(A[1..n]) |
複雜度比較
時間複雜度
Sequence | Complexity |
---|---|
Random | $O(N^2)$ |
Nearly Sorted | $O(N^2)$ |
Reversed | $O(N^2)$ |
Few Unique | $O(N^2)$ |
Selection sort 的時間複雜度在所有情況下都是 $O(N^2)$,獨立於資料的組成
空間複雜度
沒有用到額外的 array,$O(1)$ space
可以到 Toptal 的這個網頁觀看不同 case 的視覺化排序過程