十種常見排序算法可以分為兩大類:
- 比較類排序:通過比較來決定元素間的相對次序,由于其時間復雜度不能突破O(nlogn),因此也稱為非線性時間比較類排序。
- 非比較類排序:不通過比較來決定元素間的相對次序,它可以突破基于比較排序的時間下界,以線性時間運行,因此也稱為線性時間非比較類排序。?
排序方法 | 分類 | 時間復雜度(平均) | 時間復雜度(最壞) | 時間復雜度(最好) | 空間復雜度 | 穩定性 | 重要程度 |
冒泡排序 | 比較類-交換排序 | O(n*2) | O(n*2) | O(n) | O(1) | 穩定 | |
快速排序 | 比較類-交換排序 | O(nlogN) | O(n*2) | O(nlogN) | O(nlogN) | 不穩定 | |
簡單插入排序 | 比較類-插入排序 | O(n*2) | O(n*2) | O(n) | O(1) | 穩定 | |
希爾排序 | 比較類-插入排序 | O(n*1.3) | O(n*2) | O(n) | O(1) | 不穩定 | |
簡單選擇排序 | 比較類-選擇排序 | O(n*2) | O(n*2) | O(n*2) | O(1) | 不穩定 | |
堆排序 | 比較類-選擇排序 | O(nlogN) | O(nlogN) | O(nlogN) | O(1) | 不穩定 | |
歸并排序 | 比較類-歸并排序 | O(nlogN) | O(nlogN) | O(nlogN) | O(n) | 穩定 | |
計數排序 | 非比較類 | O(n+k) | O(n+k) | O(n+k) | O(n+k) | 穩定 | |
桶排序 | 非比較類 | O(n+k) | O(n**2) | O(n) | O(n+k) | 穩定 | |
基數排序 | 非比較類 | O(n*k) | O(n*k) | O(n*k) | O(n+k) | 穩定 |
指標解釋:
- 穩定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。
- 不穩定:如果a原本在b的前面,而a=b,排序之后 a 可能會出現在 b 的后面。
- 時間復雜度:對排序數據的總的操作次數。反映當n變化時,操作次數呈現什么規律。
- 空間復雜度:是指算法在計算機內執行時所需存儲空間的度量,它也是數據規模n的函數。
參考:
https://www.cnblogs.com/onepixel/p/7674659.html