各類排序算法比較(2):時間複雜度,空間複雜度

時間複雜度

n^2表示n的平方,選擇排序有時叫作直接選擇排序或簡單選擇排序算法

 

排序方法 平均時間 最好時間 最壞時間
桶排序(不穩定) O(n) O(n) O(n)
基數排序(穩定) O(n) O(n) O(n)
歸併排序(穩定) O(nlogn) O(nlogn) O(nlogn)
快速排序(不穩定) O(nlogn) O(nlogn) O(n^2)
堆排序(不穩定) O(nlogn) O(nlogn) O(nlogn)
希爾排序(不穩定) O(n^1.25)    
冒泡排序(穩定) O(n^2) O(n) O(n^2)
選擇排序(不穩定) O(n^2) O(n^2) O(n^2)
直接插入排序(穩定) O(n^2) O(n) O(n^2)

 

O(n)這樣的標誌叫作漸近時間複雜度,是個近似值.各類漸近時間複雜度由小到大的順序以下數組

O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n)spa

通常時間複雜度到了2^n(指數階)及更大的時間複雜度,這樣的算法咱們基本上不會用了,太不實用了.好比遞歸實現的漢諾塔問題算法就是O(2^n)..net

平方階(n^2)的算法是勉強能用,而nlogn及更小的時間複雜度算法那就是很是高效的算法了啊.排序

 

空間複雜度

冒泡排序,簡單選擇排序,堆排序,直接插入排序,希爾排序的空間複雜度爲O(1),由於須要一個臨時變量來交換元素位置,(另外遍歷序列時天然少不了用一個變量來作索引)遞歸

快速排序空間複雜度爲logn(由於遞歸調用了) ,歸併排序空間複雜是O(n),須要一個大小爲n的臨時數組.索引

基數排序的空間複雜是O(n),桶排序的空間複雜度不肯定ci

 

 

最快的排序算法是桶排序

全部排序算法中最快的應該是桶排序(不少人誤覺得是快速排序,實際上不是.不過實際應用中快速排序用的多)但桶排序通常用的很少,由於有幾個比較大的缺陷.get

1.待排序的元素不能是負數,小數.table

2.空間複雜度不肯定,要看待排序元素中最大值是多少.

所須要的輔助數組大小即爲最大元素的值.

相關文章
相關標籤/搜索