O(k)算法从最小堆中找到第k个min元素

时间:2014-11-18 17:13:12

标签: algorithm heap time-complexity

o(klogn)解决方案很容易找到第k个最小值。这里O(klogk) time algorithm to find kth smallest element from a binary heap是一个O(klogk)解决方案。但我想的是一个算法,如果正确的话可能是o(k)。从最小堆中,取出前k个元素(前k个节点,逐级移动)并将它们存储在一个数组中。现在最大限度地堆积这个数组自下而上需要o(k)时间。这个堆的根将是所需的答案。任何人都可以看到这个算法的缺陷吗?

1 个答案:

答案 0 :(得分:3)

考虑这个例子

        1
    2       11
  3   4   12  13

如果你想获得第3分钟的元素,它将不会在3个第一个节点中。