排序算法作爲基礎算法,相信大家在學校上C語言課程的時候都接觸過一些。筆者這裏暫時將之前寫的排序算法博客簡單的總結一下。
比較排序算法
以上算法中的部分算法有個特點,即
在排序的最終結果中,各元素的次序依賴於它們之間的比較。
這類排序算法稱之爲比較排序算法。其中上述排序算法中,比較排序算法有冒泡排序、選擇排序、插入排序、歸併排序、堆排序、快速排序。而計數排序、計數排序與桶排序則是通過計算而非比較來確定排序順序的,這三種排序算法具有線性時間複雜度。
穩定性
排序算法的穩定性指的是假設待排序數組中有兩個元素的值相等,若排序後這兩個數字的相對位置沒有發生改變,則排序算法就是穩定的;否則就是不穩定的。筆者個人覺得,排序算法穩定性的含義在基數排序算法中能夠更好地體現。
- 穩定排序算法:冒泡排序、插入排序、歸併排序、計數排序、基數排序。
- 不穩定排序算法:堆排序、快速排序、希爾排序(未講)、選擇排序。
未完待續……