1. 程式人生 > >資料結構中排序複雜度整理

資料結構中排序複雜度整理

今天上午複習了一下《資料結構高分筆記》中的各個排序演算法,現在先對各個排序演算法的複雜度做一個整理。

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)。