1. 程式人生 > >資料結構--七大排序演算法總結

資料結構--七大排序演算法總結

面試中,無論是問還是寫,排序被問到的次數總是很多。總結一些八大排序演算法。

排序演算法

七大排序時間複雜度&空間複雜度&穩定性

這裡寫圖片描述

初始序列對演算法效能有無影響

排序方法 初始序列有無影響 最好情況 最壞情況
插入排序 正序有序這樣只需要比較n次,不需要移動。因此時間複雜度為O(n) 逆序有序這樣每一個元素就需要比較n次,共有n個元素,因此實際複雜度為O(n­2)
shell排序 與選的步長有關由於希爾排序的好壞和步長d的選擇有很多關係,因此,目前還沒有得出最好的步長如何選擇(現在有些比較好的選擇了,但不確定是否是最好的)。所以,不知道最好的情況下的演算法時間複雜度。 O(N*logN),最壞的情況下和平均情況下差不多。
選擇排序
堆排序
氣泡排序 正序有序,則只需要比較n次。故,為O(n) 逆序有序,則需要比較(n-1)+(n-2)+……+1,故,為O(N*N)
快速排序 無序時因為每次都將序列分為兩個部分(一般二分都複雜度都和logN相關),故為 O(NlogN) 基本有序時,退化為氣泡排序,幾乎要比較N*N次,故為O(N*N)
歸併排序