排序算法的自我理解

按照自己的理解歸納一下,有不對的地方歡迎指正

1. 冒泡


每一趟遍歷將相鄰兩個數從小到大排,O(N^2)

2.選擇


每一趟遍歷找最小的元素往前放,O(N^2)

3. 插入


將前面的序列看作有序數列,將後面的值依次插入序列中相應位置,O(N^2)

4.快速


選一基準元素,將其餘數依次與基準數作對比,較大的放右邊,較小的放左邊,然後再對左右的按照前面方法排,O(nlogn)

5.歸併


將數組分爲兩個子序列,對兩個子序列進行在劃分兩個子序列,然後從最小的子序列開始排序,依次往上歸併,歸併方法按照小者先放來做。O(nlogn)

6.堆


將數組放成二叉樹的樣子,升序的話構建的節大頂堆降序的話構建小頂堆,即大於一個二叉中最大值更新至子節點,在最後將根節點尾段的葉子節點更換位置構成有序的數列。O(nlogn)

7.希爾


第一遍兩兩排序,每兩個之間的跨度爲數組長度的一半,之後依次翻倍數量,跨度減半,每組排序時使用插入。O(n^1.25)

8.計數


前提:輸入的數據必須是有確定範圍的整數
計最大值和最小值構建一個整數鍵區域,依次將對應數值投入健中,再按照鍵的順序返回數組:不是基於比較。O(N)

9.桶


計數排序的升級版,將計數排序的鍵值對應變爲函數映射(函數值域有序),然後先排桶內再排桶。O(N)

10.基數

從最低位開始排,再依次往高位排直到最高位。O(d(n+r))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章