哪个时间复杂度更高?

时间:2017-12-05 00:31:52

标签: time-complexity

我必须选择哪些操作在AVL树上具有比BST更好的最坏情况时间复杂度。我已经确定每个操作的时间复杂度取决于树...

AVL树的最坏情况时间复杂度是......

Insert - O(log(n))
Remove - O(log(n))
Search - O(log(n))

BST的最坏情况时间复杂度是....

Insert - O(height)
Remove - O(height)
Search - O(height)

O(log(n))的时间复杂度是否比O(高度)更好?

3 个答案:

答案 0 :(得分:0)

BST上插入,删除和搜索的最坏情况时间复杂度为<head> <!-- Plotly.js --> <script src="https://cdn.plot.ly/plotly-latest.min.js"></script> </head> <body> <!-- Plotly chart will be drawn inside this DIV --> <div id="myDiv"></div> <script> var y = ['US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US' ] var trace1 = { x: [1.7377, 1.8417, 1.9909, 1.9395, 1.8651, 1.8919, 1.7707, 1.5565, 1.8166, 1.3449, 1.3156, 1.3081, 1.6179, 1.574, 1.7276, 1.9215, 1.904, 2.0057, 2.0598, 2.2585, 2.209, 2.1056, 2.1448, 1.8363, 2.067, 2.2431, 2.0881, 2.1856, 2.4389, 2.2612, 2.2647, 2.3306, 2.369, 2.7129, 2.6152, 2.6228, 2.7727, 2.766, 2.8742, 2.9543, 2.9113, 2.9618, 2.8921, 2.7691, 2.7775, 2.7536, 2.6884, 2.9045, 3.0042, 2.9149, 2.8295, 2.6813, 2.6212, 2.5895, 2.6575, 2.8279, 2.8184, 2.9544, 2.9467, 2.8441, 2.8355, 2.6224, 2.5876, 2.5422, 2.5885, 2.6453, 2.431, 2.488 ], y: y, name: 'US', marker: { color: 'black' }, type: 'box', boxmean: false, orientation: 'h' }; var data = [trace1]; var layout = { title: 'US ideal points spread', xaxis: { title: 'US', zeroline: false }, boxmode: 'group' }; Plotly.newPlot('myDiv', data, layout); </script> </head> ,其中O(n)是BST中的节点数。你可以通过按顺序将节点插入BST来触发这种最坏的情况,这样BST本质上就是一个链表(例如,先插入1,然后插入2,然后插入3,依此类推......你最终会得到一个BST看起来像1 - &gt; 2 - &gt; 3 ...)。

n的时间复杂度高于O(log(n))

答案 1 :(得分:0)

Attribute :class is not allowed here O(log(n))的最佳案例。二叉树的高度可以是O(height)log(n)之间的任意整数,其中n表示节点数。

例如,如果您有一个BST,其中每个节点只有正确的子节点,则它与链接列表相同,因此对于所有三个操作都具有n最差情况复杂性。

另一方面,AVL是自平衡二分搜索树,意味着来自任何节点的每两个子树具有相同的深度(高度)+ - 常数。这意味着您在每个步骤中大约将值减半,从而导致O(n)复杂度,这也是O(log(n))复杂度。

答案 2 :(得分:0)

AVL树基本上是高度平衡的BST。 如果考虑完整的AVL树,则记录n(AVL树)&gt; log n(BST)。 - &GT;其中n是节点数。

而当你考虑O(身高)时,它在AVL和BST中都是相同的 3
  \
    5
      (BST)
height = 2,n = 2

  3  
 / \  
2   5  
       (AVL)

身高= 2,n = 3