不同底層結構的映射效率比較

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

    1. 基於鏈表的映射
    2. 基於二分搜索樹的映射
method LinkedListMap BSTMap BST[avr Time] worst
增add O(n) O(h) O(logn) O(n)
刪remove O(n) O(h) O(logn) O(n)
改set O(n) O(h) O(logn) O(n)
查get O(n) O(h) O(logn) O(n)
查contains O(n) O(h) O(logn) O(n)

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倍

所以需要再需要引入avl平衡二叉樹

  • 有序映射:基於搜索樹實現【avl】
  • 無序映射:基於hash表實現【hashMap】
    • 實際情況下無序映射不會使用鏈表實現
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章