1. 程式人生 > >常見資料結構和演算法效率的對比

常見資料結構和演算法效率的對比

1. 資料結構部分

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

 

通用資料結構

查詢 

插入 

 刪除

遍歷 

陣列

O(N)

O(N)

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)

 

1. 資料結構部分

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

 

通用資料結構

查詢 

插入 

 刪除

遍歷 

陣列

O(N)

O(N)

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)