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

來源:互聯網
上載者:User
文章目錄
  • 空間複雜度
  • 最快的排序演算法是桶排序

 

時間複雜度

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)

一般時間複雜度到了2^n(指數階)及更大的時間複雜度,這樣的演算法我們基本上不會用了,太不實用了.比如遞迴實現的漢諾塔問題演算法就是O(2^n).

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

 

空間複雜度

冒泡排序,簡單選擇排序,堆排序,直接插入排序,希爾排序的空間複雜度為O(1),因為需要一個臨時變數來交換元素位置,(另外遍曆序列時自然少不了用一個變數來做索引)

快速排序空間複雜度為logn(因為遞迴調用了) ,歸併排序空間複雜是O(n),需要一個大小為n的臨時數組.

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

 

 

最快的排序演算法是桶排序

所有排序演算法中最快的應該是桶排序(很多人誤以為是快速排序,實際上不是.不過實際應用中快速排序用的多)但桶排序一般用的不多,因為有幾個比較大的缺陷.

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

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

所需要的輔助數組大小即為最大元素的值.

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.