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


 

                    查找     插入      刪除

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

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

鏈表            o(n)        o(1)       o(n)

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

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

二叉樹一般   o(lgn)     o(lgn)      o(lgn)

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

哈希表         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)即線性時間。對用數組構造的集合才能使用折半查找。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM