數據結構--七大排序算法總結

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

排序算法

插入,希爾,選擇,堆:
http://blog.csdn.net/sayhello_world/article/details/61927082

冒泡,快速
http://blog.csdn.net/sayhello_world/article/details/63258406

歸併
http://blog.csdn.net/sayhello_world/article/details/65631159

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

這裏寫圖片描述

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

排序方法 初始序列有無影響 最好情況 最壞情況
插入排序 正序有序這樣只需要比較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)
歸併排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章