为什么优先级队列更喜欢使用堆而不是数组来实现,尽管堆本身是使用数组实现的

Why Priority queue preferred to implement using heap not by array although Heap itself implemented using array

为什么优先级队列更喜欢使用堆而不是数组来实现,尽管堆本身是使用数组实现的。

二叉堆提供了部分排序,保证了 O(log n) 插入和 O(log n) 最高优先级项目的删除。

对于平面阵列,您有两种选择:

  1. 维护有序数组。插入成为 O(n) 操作,删除最高优先级的项目是 O(1)。
  2. 按收到物品的顺序插入物品。然后插入变为 O(1),移除最高优先级的项目为 O(n)。

这两个选项中的任何一个都会使优先级队列的效率低于实现二叉堆的效率。