平衡搜索树查询,渐近分析

时间:2010-05-22 15:22:24

标签: algorithm data-structures binary-tree

情况如下: -

  

我们有n号,我们有印刷品   他们按排序顺序。我们有权访问   平衡字典数据结构,   支持操作搜索,   插入,删除,最小,最大   在O(log n)时间。

     

我们想要检索数字   使用排序的O(n log n)时间顺序   只有插入和有序   遍历。

答案是: -

Sort()
  initialize(t)
  while(not EOF)
     read(x)
     insert(x,t);
  Traverse(t);

现在查询是我们在时间“n”中读取元素然后遍历“log n”(按顺序遍历)时间中的元素,然后是该算法的总时间(n + logn)时间,据我说..请解释这个算法对时间计算的跟进。如何在O(nlogn)时间内对列表进行排序?

感谢。

1 个答案:

答案 0 :(得分:4)

每个插入都是O(log n)。您正在进行n插入,因此可以提供n * O(log n) = O(n log n)渐近时间复杂度。遍历树是O(n),因为有n个节点。这加起来O(n + n log n)O(n log n)相差一个常数,因此最终的渐近复杂度为O(n log n) ..

  

然后遍历“log n

中的元素

遍历为O(n),而不是O(log n)。插入内容为O(log n),您正在进行n次插入。