按照自己的理解歸納一下,有不對的地方歡迎指正
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))