網址是: https://mp.weixin.qq.com/s/IAZnN00i65Ad3BicZy5kzQ程序員
原創: 帥地 苦逼的碼農 2月20算法
說明數組
十大排序算法能夠說是每一個程序員都必須得掌握的了,花了一天的時間把代碼實現且整理了一下,爲了方便你們學習,我把它整理成一篇文章,每種算法會有簡單的算法思想描述,爲了方便你們理解,我還找來了動圖演示;這還不夠,我還附上了對應的優質文章,看完不懂你來砍我,若是不想砍我就給我來個好看。學習
有些人可能不知道什麼是穩定排序、原地排序、時間複雜度、空間複雜度,我這裏先簡單解釋一下:優化
一、穩定排序:若是 a 本來在 b 的前面,且 a == b,排序以後 a 仍然在 b 的前面,則爲穩定排序。spa
二、非穩定排序:若是 a 本來在 b 的前面,且 a == b,排序以後 a 可能不在 b 的前面,則爲非穩定排序。排序
三、原地排序:原地排序就是指在排序過程當中不申請多餘的存儲空間,只利用原來存儲待排數據的存儲空間進行比較和交換的數據排序。遞歸
四、非原地排序:須要利用額外的數組來輔助排序。內存
五、時間複雜度:一個算法執行所消耗的時間。程序
六、空間複雜度:運行完一個算法所需的內存大小。
爲了方便你們查找,我這裏弄一個僞目錄,沒有跳轉功能。
選擇排序
插入排序
冒泡排序
非優化版本
優化版本
希爾排序
歸併排序
遞歸式歸併排序
非遞歸式歸併排序
快速排序
堆排序
基數排序
非優化版本
優化版本
桶排序
基數排序