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

时间:2018-12-12 07:49:43

标签: heap priority-queue

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

1 个答案:

答案 0 :(得分:2)

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

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

  1. 维护有序数组。插入变为O(n)操作,而删除优先级最高的项为O(1)。
  2. 按接收顺序插入项目。这样,插入将变为O(1),而删除优先级最高的项将变为O(n)。

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