在最小堆中找到第二和第三最小值

时间:2018-10-07 19:22:34

标签: algorithm time-complexity heap min-heap

这种逻辑正确吗?

在使用数组实现的高效最小堆中,找到最小值是O(1),因为它只是最顶层的元素(数组的第一个元素。对于数组,它也是O(1))获得第二个最小值,因为它将是顶部节点的直接子节点(数组中的第二个或第三个值);但是,获得第三个最小值是O(log(n)),因为该值可能在最坏的情况下位于数组中的其他任何地方,我们可以通过有效地调用两次提取最小值函数(具有O(log(n))),然后获得最小值,从而比线性搜索(O(n))做得更好(仍为O(1))。

0 个答案:

没有答案
相关问题