LinkedListSet 和 BSTSet 性能分析

  • 集合基於底層實現不同,而造成的性能不同

    1. 基於鏈表的集合
    2. 基於二分搜索樹的集合
method LinkedListSet BSTSet
增add O(n)【需要查】 O(h)[平均]
查contains O(n) O(h)[平均]
刪remove O(n)【均攤】 O(h)[平均]

h指代的是二分搜索樹的deepth
- 需要注意的是:在BST最壞的情況下【不考慮AVL】,是隻有一個分支的樹形結構,時間複雜度也爲O(n)

在滿二叉樹的情況下,h與節點n之間的關係。

N = 2^h-1

h = log_2(n+1)

O(h)=O(log_2(n))=O(log(n))

二分搜索樹最多只需要查找其深度個節點就可以查詢到相應位置。

時間複雜度分析

logn的複雜度是非常快的

Data Size logn n Gap
n = 16 4 16 4倍
n=1024 10 1024 100倍
n=100w 20 100w 5w倍
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章