我不清楚IndexMinPQ数据结构的用途。给出了一个实现IndexMinPQ.java

虽然本书本身提供了简要介绍但不清楚。我不清楚为什么我们需要这种数据结构和其他操作?

最佳答案

优先级队列的堆实现问题在于,很难找到特定的节点。例如,假设您有一个包含100,000个项目的堆,并且想要降低值为732的节点的优先级。找到该节点的唯一方法是对堆进行线性搜索。降低节点的优先级是O(log n)操作,但是找到节点的操作是O(n)。

索引优先级队列维护查找结构,以便您可以在O(1)中找到该节点。

在需要修改优先级队列中的节点的任何系统中,此功能都很重要。例如,一个作业计划程序,在其中您经常需要调整作业的优先级或取消作业。

08-16 12:32