排序算法屬於數據結構和算法的基礎內容,並且也是大廠筆試中的高頻考點。
今天這篇文章來簡單梳理一下常見的排序算法、相關資料和大廠面試真題。
我們按照下面這幅圖來梳理

按照“平均復雜度”划分,冒泡排序、選擇排序、插入排序,它們算一類,這一類算法實現方式不同,但思路相同。都是對
待排序數組
的元素兩兩比較,一趟比較就需要n個元素參與計算,比較n趟,算法的平均時間復雜度就是 n^2,是最慢的排序算法。
而改進后的算法就是下面的希爾排序、歸並排序、快速排序和堆排序,舉個形象的例子來說下跟上面的區別,最上面的 3 個排序算法相當於你在公司兢兢業業,一步一步升遷,最終做到CEO的位置,而下面的 4 個算法,相當於破格提拔,跳躍式升遷,比前者就更快當上 CEO。
回到算法原理上,它們的目的就是將較小的元素盡可能地大幅往前調。以快速排序為例:
待排序數據:[4, 7, 8, 2, 1] ,第一趟排序后結果為:[1, 2, 4, 8, 7]
可以發現,元素 1、2 從倒數的位置經過一次排序就可以調到正數的位置,調整效率比冒泡一個一個往上冒快太多了。
除快速排序外,希爾排序、歸並排序、堆排序都采用的是類似思想。
而最后三個排序算法計數排序、桶排序、計數排序,則是將這種躍遷的思想發揮到極致。回到剛剛那個形象的例子,相當於我們已經知道CEO是最高的職位,我們既不用一步一步升遷,也不用跳躍式升遷,一步到位直接坐上CEO位置。
對應到算法原理上,就是建立有序的數組(或桶),遍歷一次
待排序數組
,只要將元素填入有序數組(或桶)對應的位置,就完成排序。這種算法雖然效率高,但也有缺點,只支持數字排序並且需要額外空間。
每一種算法我都收集了優質的資料和代碼實現:
冒泡排序
-
算法講解
-
算法實現
選擇排序
-
算法講解
-
算法實現
插入排序
-
算法講解
-
算法實現
希爾排序
-
算法講解
-
算法實現
歸並排序
-
算法講解
-
算法實現
快速排序
-
算法講解
-
算法實現
堆排序
-
算法講解
-
算法實現
計數排序
-
算法講解
-
算法實現
基數排序
-
算法講解
-
算法實現
桶排序
-
算法講解
-
算法實現
面試題
...
共 76 道大廠面試真題,完整版點擊: 76到排序算法大廠真題
如果對你有用,請給個 star, 后續不斷更新優質內容。
歡迎公眾號 「渡碼」