排序算法看這一篇文章就夠了(附80道大廠面試題)


排序算法屬於數據結構和算法的基礎內容,並且也是大廠筆試中的高頻考點。
 
今天這篇文章來簡單梳理一下常見的排序算法、相關資料和大廠面試真題。
 
我們按照下面這幅圖來梳理
常見的排序算法
 
按照“平均復雜度”划分,冒泡排序、選擇排序、插入排序,它們算一類,這一類算法實現方式不同,但思路相同。都是對 待排序數組 的元素兩兩比較,一趟比較就需要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, 后續不斷更新優質內容。
 

歡迎公眾號 渡碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM