常見數據結構的查找、插入、刪除時間複雜度

 

                    查找     插入      刪除html

數組            o(n)        o(1)        o(n)數組

有序數組     o(lgn)      o(n)        o(n)post

鏈表            o(n)        o(1)       o(n).net

有序鏈表      o(n)        o(n)        o(n)htm

二叉樹最壞   o(n)        o(n)        o(n)blog

二叉樹通常   o(lgn)     o(lgn)      o(lgn)it

平衡樹         o(lgn)     o(lgn)      o(lgn)class

哈希表         o(1)        o(1)        o(1)效率

 

(1)向一個有序數組中插入一個數的時間複雜度是多少?二叉樹

查找插入位置若是用遍歷查找的是O(n),用二分查找是O(log2n)。

可是數組的插入操做須要將插入位置後的元素所有後移一位,這須要O(n)。

因此總的時間複雜度是O(n)。(O(n)+O(n)=O(n),O(log2n)+O(n)=O(n))

(2) 有序鏈表查找的時間複雜度是O(n)的緣由是什麼?

折半查找對鏈表而言根本不能達到O(logN)的效率。只有當訪問集合中任何一個元素的時間是常量O(1)時間時,折半查找才能達到O(logN),而鏈表訪問其中元素的平均時間是O(N)即線性時間。對用數組構造的集合才能使用折半查找。

相關文章
相關標籤/搜索