常用資料結構和演算法操作效率的對比總結
歡迎關注我新搭建的部落格:[http://www.itcodai.com/](http://www.itcodai.com/)
前面介紹了經典的資料結構和演算法,這一節我們對這些資料結構和演算法做一個總結,具體細節,請參見各個章節的詳細介紹,這裡我們用表格來呈現它們的效率。
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) |
|
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) |
以上是對經典資料結構和演算法部分的一個總結,如有錯誤之處,歡迎留言指正~
文末福利:“程式設計師私房菜”,一個有溫度的公眾號~
_____________________________________________________________________________________________________________________________________________________
-----樂於分享,共同進步!