資料結構中排序複雜度整理
阿新 • • 發佈:2019-01-25
今天上午複習了一下《資料結構高分筆記》中的各個排序演算法,現在先對各個排序演算法的複雜度做一個整理。
1、各個排序演算法複雜度分析
最壞情況 | 最好情況 | 平均情況 | 空間複雜度 | |
直接插入排序 | O(n^2) | O(n) | O(n^2) | O(1) |
折半插入排序 | O(n^2) | O(n) | O(n^2) | O(1) |
希爾排序 | O(nlogn) | O(1) | ||
冒泡排序 | O(n^2) | O(n) | O(n^2) | O(1) |
快速排序 | O(n^2) | O(nlogn) | O(nlogn) | O(logn) |
直接選擇排序 | O(n^2) | O(n^2) | O(n^2) | O(1) |
堆排序 | O(nlogn) | O(nlogn) | O(1) | |
二路歸併排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) |
2、關於各個排序演算法穩定性:快速排序、希爾排序、直接選擇排序和堆排序是不穩定的排序演算法,其它均為穩定的排序演算法。
3、關於排序原理細節:
① 經過一趟排序,能夠保證一個元素達到最終位置,這樣的排序是交換類的那兩種(氣泡排序和快速排序)和選擇類那兩種(直接選擇排序和堆排序)。
② 排序方法的元素比較次數和原始序列無關的排序演算法有:直接選擇排序和折半插入排序。
③ 排序方法的元素比較次數和原始序列有關的排序演算法有:交換類的排序。
4、藉助於“比較”進行排序的演算法,在最壞情況下能夠達到的最好的時間複雜度為O(nlogn)。