資料結構--七大排序演算法總結
阿新 • • 發佈:2019-01-09
面試中,無論是問還是寫,排序被問到的次數總是很多。總結一些八大排序演算法。
排序演算法
七大排序時間複雜度&空間複雜度&穩定性
初始序列對演算法效能有無影響
排序方法 | 初始序列有無影響 | 最好情況 | 最壞情況 |
---|---|---|---|
插入排序 | 有 | 正序有序這樣只需要比較n次,不需要移動。因此時間複雜度為O(n) | 逆序有序這樣每一個元素就需要比較n次,共有n個元素,因此實際複雜度為O(n2) |
shell排序 | 有 | 與選的步長有關由於希爾排序的好壞和步長d的選擇有很多關係,因此,目前還沒有得出最好的步長如何選擇(現在有些比較好的選擇了,但不確定是否是最好的)。所以,不知道最好的情況下的演算法時間複雜度。 | O(N*logN),最壞的情況下和平均情況下差不多。 |
選擇排序 | 無 | ||
堆排序 | 無 | ||
氣泡排序 | 有 | 正序有序,則只需要比較n次。故,為O(n) | 逆序有序,則需要比較(n-1)+(n-2)+……+1,故,為O(N*N) |
快速排序 | 有 | 無序時因為每次都將序列分為兩個部分(一般二分都複雜度都和logN相關),故為 O(NlogN) | 基本有序時,退化為氣泡排序,幾乎要比較N*N次,故為O(N*N) |
歸併排序 | 無 |