十大排序動畫參考鏈接:https://www.cnblogs.com/onepixel/articles/7674659.html
比較類排序:通過比較來決定元素間的相對次序,由於其時間複雜度不能突破O(nlogn),因此也稱爲非線性時間比較類排序。
非比較類排序:不通過比較來決定元素間的相對次序,它可以突破基於比較排序的時間下界,以線性時間運行,因此也稱爲線性時間非比較類排序。
插入排序,在已經有序的元素中排序,則時間複雜度可以達到O(n),所以每個排序,面對不同的數據,可能會有不一樣的時間複雜度,我們能夠給出的就是,平均時間複雜度
總體而言,快速相對來說是比較快的排序算法
原地排序:直接可以在數組上完成排序,不需要再另外開闢空間,所以一些系統對空間相對敏感,則不適合歸併排序
快速排序也是原地排序,但是它是利用遞歸實現,每次遞歸都需要佔用棧空間,所以額外空間爲O(logn),歸併排序其實也是遞歸實現,它的額外空間應該是O(n+logn)但是logn 相對n來說可以忽略不計
對於快速排序的穩定性,首先需要隨機選擇基準點,很有可能將一批中相等的元素選到了前面,而堆排序,在組建堆的時候,很可能被打亂。
不穩定的排序算法也可以通過自定義函數,使得排序算法穩定(比如重載<比較符)