各種排序算法時間復雜度


原博客地址:https://www.cnblogs.com/xiaochun126/p/5086037.html

各種排序算法比較 

 

各種常用排序算法

類別

排序方法

時間復雜度

空間復雜度

穩定性

復雜性

特點

最好

平均

最壞

輔助存儲

 

簡單

 

插入

排序

直接插入

O(N)

O(N2)

O(N2)

O(1)

穩定

簡單 

 

希爾排序

O(N)

O(N1.3)

O(N2)

O(1)

不穩定

復雜

 

選擇

排序

直接選擇

O(N)

O(N2)

O(N2)

O(1)

不穩定

 

 

堆排序

O(N*log2N)

O(N*log2N)

O(N*log2N)

O(1)

不穩定

復雜

 

交換

排序

冒泡排序

O(N)

O(N2)

O(N2)

O(1)

穩定

簡單

1、冒泡排序是一種用時間換空間的排序方法,n小時好
2、最壞情況是把順序的排列變成逆序,或者把逆序的數列變成順序,最差時間復雜度O(N^2)只是表示其操作次數的數量級
3、最好的情況是數據本來就有序,復雜度為O(n)

快速排序

O(N*log2N)

O(N*log2N) 

O(N2)

O(log2n)~O(n) 

不穩定

復雜

1、n大時好,快速排序比較占用內存,內存隨n的增大而增大,但卻是效率高不穩定的排序算法。
2、划分之后一邊是一個,一邊是n-1個,
這種極端情況的時間復雜度就是O(N^2)
3、最好的情況是每次都能均勻的划分序列,O(N*log2N)

歸並排序

O(N*log2N) 

O(N*log2N) 

O(N*log2N) 

O(n)

穩定

復雜

1、n大時好,歸並比較占用內存,內存隨n的增大而增大,但卻是效率高且穩定的排序算法。

基數排序

O(d(r+n))

O(d(r+n))

O(d(r+n))

O(rd+n)

穩定

復雜

 

注:r代表關鍵字基數,d代表長度,n代表關鍵字個數

 

注:

1、歸並排序每次遞歸都要用到一個輔助表,長度與待排序的表長度相同,雖然遞歸次數是O(log2n),但每次遞歸都會釋放掉所占的輔助空間,

2、快速排序空間復雜度只是在通常情況下才為O(log2n),如果是最壞情況的話,很顯然就要O(n)的空間了。當然,可以通過隨機化選擇pivot來將空間復雜度降低到O(log2n)。

 

 

相關概念:

1、時間復雜度

     時間復雜度可以認為是對排序數據的總的操作次數。反映當n變化時,操作次數呈現什么規律。

     常見的時間復雜度有:常數階O(1),對數階O(log2n),線性階O(n), 線性對數階O(nlog2n),平方階O(n2)

     時間復雜度O(1):算法中語句執行次數為一個常數,則時間復雜度為O(1),

2、空間復雜度

    空間復雜度是指算法在計算機內執行時所需存儲空間的度量,它也是問題規模n的函數

    空間復雜度O(1):當一個算法的空間復雜度為一個常量,即不隨被處理數據量n的大小而改變時,可表示為O(1)

    空間復雜度O(log2N):當一個算法的空間復雜度與以2為底的n的對數成正比時,可表示為O(log2n)

                                 ax=N,則x=logaN,

    空間復雜度O(n):當一個算法的空間復雜度與n成線性比例關系時,可表示為0(n).

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM