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

常用資料結構和演算法操作效率的對比總結

歡迎關注我新搭建的部落格:[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)

        以上是對經典資料結構和演算法部分的一個總結,如有錯誤之處,歡迎留言指正~

        文末福利:“程式設計師私房菜”,一個有溫度的公眾號~ 
        程式設計師私房菜

_____________________________________________________________________________________________________________________________________________________

-----樂於分享,共同進步!