1. 程式人生 > >【資料結構】8種排序的比較

【資料結構】8種排序的比較

 

  • 直接插入排序

①所給元素越接近有序,直接插入排序的時間效率越高
②時間複雜度: O(N^2)
③空間複雜度: O(1)
④穩定性: 穩定

  • 希爾排序

①希爾排序是對直接插入排序的優化 
②當gap > 1時,都是預排序,目的是讓陣列更接近於有序; 當gap == 1時,陣列已經接近有序的了,這樣就會很快。這樣整體  而言,可以達到優化的效果   
③時間複雜度:希爾排序的時間複雜度不好計算,需要進行推導,推匯出來平均時間複雜度: O(N^1.3 -N^2)
④空間複雜度:O(1)
⑤穩定性: 不穩定

  • 直接選擇排序

①直接選擇排序好理解,但是效率不是很好。實際中很少使用
②時間複雜度: O(N^2)
③空間複雜度: O(1)
④穩定性:不穩定(可以調整為穩定的)

  • 堆排序

①堆排序使用堆來選數,效率就高了很多
②時間複雜度: O(N*logN)
③空間複雜度: O(1)
④穩定性:不穩定

  • 氣泡排序

①氣泡排序是一種非常容易理解的排序
②時間複雜度: O(N^2)
③空間複雜度: O(1)
④穩定性:穩定

  • 快速排序

①快速排序整體的綜合性能和使用場景都是比較好的,所以才敢叫快速排序
②時間複雜度: O(N*logN)
③空間複雜度: O(logN)
④穩定性:不穩定

  • 歸併排序

①歸併的缺點在於需要O(N)的空間複雜度,歸併排序的思考更多的是解決在磁碟中的外排序問題
②時間複雜度: O(N*logN)
③空間複雜度: O(N)
④穩定性:穩定

  • 計數排序

①計數排序在資料範圍集中時,效率很高,但是適用範圍及場景有限
②時間複雜度: O(MAX(N,範圍))
③空間複雜度: O(範圍)
④穩定性:穩定

  • 資料敏感性

資料敏感型別:氣泡排序、快速排序、直接插入排序、希爾排序

資料不敏感型別:直接選擇排序、堆排序、歸併排序、計數排序

  • 注意:

穩定性:所謂穩定性是指待排序的序列中有兩元素相等,排序之後它們的先後順序不變。

資料敏感:資料敏感是指給定資料無序和有序,對排序的效率影響很大。