常用的排序演算法和時間複雜度

xiangzhihong8發表於2016-05-31

1. 資料結構部分

資料結構中常用的操作的效率表

通用資料結構

查詢 

插入 

 刪除

遍歷 

陣列

O(N)

O(1)

O(N)

有序陣列

O(logN)

O(N)

O(N)

O(N)

連結串列

O(N)

O(1)

O(N)

有序連結串列

O(N)

O(N)

O(N)

O(N)

二叉樹

O(logN)

O(logN)

O(logN)

O(N)

二叉樹(最壞)

O(N)

O(N)

O(N)

O(N)

紅黑樹

O(logN)

O(logN)

O(logN)

O(N)

2-3-4樹

O(logN)

O(logN)

O(logN)

O(N)

雜湊表

O(1)

O(1)

O(1)

專用資料結構

 

 

 

 

O(1)

O(1)

佇列

O(1)

O(1)

優先順序佇列

O(N)

O(1)

優先順序佇列(堆)

O(logN)

O(logN)

 


2. 排序演算法

常見的排序演算法比較表

排序

平均情況

最好情況

最壞情況

穩定與否

空間複雜度

氣泡排序

O(N2)

O(N)

O(N2)

穩定

1

選擇排序

O(N2)

O(N2)

O(N2)

不穩定

1

插入排序

O(N2)

O(N)

O(N2)

穩定

1

希爾排序

O(NlogN)

(依賴於增量序列)

不穩定

1

快速排序

O(NlogN)

O(NlogN)

O(N2)

不穩定

O(logN)

歸併排序

O(NlogN)

O(NlogN)

O(NlogN)

穩定

O(N)

二叉樹排序

O(NlogN)

O(NlogN)

O(N2)

穩定

O(N)

堆排序

O(NlogN)

O(NlogN)

O(NlogN)

不穩定

1

拓撲排序

O(N+E)

O(N)

首先先給出我們常用的演算法的時間複雜度,後面會具體講解每一個演算法,以及在不同的場合下哪種時間複雜度很高效

相關文章