十大內排序算法總結比較

一、最基礎排序算法算法


    時間複雜度
穩定性
冒泡排序       O(n^2)
穩定
選擇排序
      O(n^2) 不穩定
插入排序       O(n^2) 穩定


二、5箇中間改良排序算法ide


時間複雜度 穩定性
歸併排序
O(nlogn)
穩定
希爾排序
平均O(nlogn),最壞O(n^2)
不穩定
堆排序
O(nlogn)
不穩定
快速排序
平均O(nlogn),最壞O(n^2) 不穩定
隨機化快排
O(nlogn) 不穩定

  (1)、歸併、堆、快排是漸進性的最優排序算法(在大規模的數據下尤其體現);優化

  (2)、解決快排最壞狀況的方案:隨機化快排,隨機選擇主元;(與輸入無關,就是隨機器的機率問題了);spa

  (3)、以上都是比較模型的排序算法,最快時間複雜度爲:O(nlogn);排序

  (4)、歸併排序用並行算法的話,時間複雜度:O(n/logn);
遞歸


三、3個侷限性的排序算法it


時間複雜度 穩定性
桶排序
O(n)
穩定
計數排序
O(n) 穩定
基數排序
O(n) 穩定

  (1)、這3個排序算法的時間複雜度都爲:O(n),都是穩定性的排序算法;table

  (2)、都是以空間換時間爲代價的算法,處理數據的規模在較小範圍內;class

  (3)、無重複數字出現:建議用桶排;基礎

  (4)、有重複數字出現,用計數/基數排序;基數排序是對計數排序的優化,在輔助空間上的優化,基數排序所需輔助空間爲:10個該元素空間,計數排序所需輔助空間爲:最大數字+1個空間;


四、空間複雜度

  O(n):桶排,計數,基數

  O(logn):歸併,快排,遞歸堆排

  O(1):非遞歸堆排,希爾

相關文章
相關標籤/搜索