一篇講解排序算法的優秀網文

網址是:  https://mp.weixin.qq.com/s/IAZnN00i65Ad3BicZy5kzQ程序員

 

必學十大經典排序算法,看這篇就夠了(附完整代碼/動圖/優質文章)(修訂版)

原創: 帥地  苦逼的碼農  2月20算法

 

說明數組

十大排序算法能夠說是每一個程序員都必須得掌握的了,花了一天的時間把代碼實現且整理了一下,爲了方便你們學習,我把它整理成一篇文章,每種算法會有簡單的算法思想描述,爲了方便你們理解,我還找來了動圖演示;這還不夠,我還附上了對應的優質文章,看完不懂你來砍我,若是不想砍我就給我來個好看學習

術語鋪墊

有些人可能不知道什麼是穩定排序、原地排序、時間複雜度、空間複雜度,我這裏先簡單解釋一下:優化

一、穩定排序:若是 a 本來在 b 的前面,且 a == b,排序以後 a 仍然在 b 的前面,則爲穩定排序。spa

二、非穩定排序:若是 a 本來在 b 的前面,且 a == b,排序以後 a 可能不在 b 的前面,則爲非穩定排序。排序

三、原地排序:原地排序就是指在排序過程當中不申請多餘的存儲空間,只利用原來存儲待排數據的存儲空間進行比較和交換的數據排序。遞歸

四、非原地排序:須要利用額外的數組來輔助排序。內存

五、時間複雜度:一個算法執行所消耗的時間。程序

六、空間複雜度:運行完一個算法所需的內存大小。

十大排序講解順序

爲了方便你們查找,我這裏弄一個僞目錄,沒有跳轉功能。

  • 選擇排序

  • 插入排序

  • 冒泡排序

    • 非優化版本

    • 優化版本

  • 希爾排序

  • 歸併排序

    • 遞歸式歸併排序

    • 非遞歸式歸併排序

  • 快速排序

  • 堆排序

  • 基數排序

    • 非優化版本

    • 優化版本

  • 桶排序

  • 基數排序

相關文章
相關標籤/搜索