如何在O(k)时间内实现一个算法来合并两个堆,其中n = 2 ^ k个元素?

时间:2016-04-10 13:39:08

标签: algorithm recursion merge heap top-down

但是,我甚至不知道这个问题意味着什么。

这只需要O(n)的最小时间来合并两个排序的数组,我不知道如何在O(k)时间内合并。

这是与之相关的三个问题:

  

此问题的目的是探索以自上而下的方式有效构建标准堆的可能性。

     
      
  1. 给出一个算法的高级描述,该算法合并两个标准堆,每个堆包含n = 2 ^ k个元素。该算法应在O(k)时间内运行。

  2.   
  3. 使用第1部分中指定的子例程,给出一个递归或迭代算法,构建一个包含2 ^ n个元素的堆。

  4.   
  5. 记下第2部分中指定的算法运行时间的等式,求解。

  6.   

1 个答案:

答案 0 :(得分:0)

您可以使用Binomial_heap Leftist heaps

当n = 2 ^ k时,它们都在O(k)时间内进行合并操作。