破坏优先级队列的算法

时间:2014-02-04 23:39:40

标签: algorithm insert priority-queue little-o

如果优先级队列有两个操作:insertbroken_min。 其中broken_min返回第一个或第二个最小项目。

这些都不能在o(logn)时间内实现。 我认为这是因为insert使用了broken_min,然后必须进行更多检查以确定它是否具有最大值。

这是正确的推理吗?

1 个答案:

答案 0 :(得分:0)

是的,我相信你是对的。

优先级队列通常实现为heap

  

堆是一种专门的[二元]树基于数据的结构......父节点的密钥小于或等于子节点的密钥,最低密钥位于根节点(最小堆)中。 / p>

broken_min可以在O(1)中实现,因为其中一个子元素将是第二大元素,因此我们可以检查它们。

但是insert将取Ω(log n),这不是o(log n)(但确实是O(log n))。

我怀疑你会找到一个能够满足给定运行时间的优先级队列实现,但是说它不可能是不负责任的。

注意:我认为你的意思是小-o(一个严格的上限,而不是big-O,这是一个大于或等于上限)给定标签,虽然大 - 大部分时间都使用了O,而且几乎没有使用过o(就我所见)。