gpt4 book ai didi

algorithm - 具有动态项目优先级的优先级队列

转载 作者:搜寻专家 更新时间:2023-11-01 03:49:38 25 4
gpt4 key购买 nike

我需要实现一个优先级队列,其中队列中项目的优先级可以更改,并且队列会自行调整,以便始终以正确的顺序移除项目。我对如何实现这个有一些想法,但我确信这是一个很常见的数据结构,所以我希望我可以使用比我更聪明的人的实现作为基础。

谁能告诉我这种类型的优先级队列的名称,以便我知道要搜索什么,或者更好的是,指出一个实现?

最佳答案

像这样的优先级队列通常使用二叉堆数据结构来实现,正如其他人所建议的那样,它通常使用数组表示,但也可以使用二叉树。增加或减少堆中元素的优先级实际上并不难。如果您知道在下一个元素从队列中弹出之前您正在更改许多元素的优先级,您可以暂时关闭动态重新排序,将所有元素插入堆的末尾,然后重新排序整个堆(有代价O(n)) 就在需要弹出元素之前。关于堆的重要之处在于,只需花费 O(n) 即可将数组放入堆中,但需要花费 O(n log n) 来对其进行排序。

我已经在一个具有动态优先级的大型项目中成功地使用了这种方法。

这是我对参数化 priority queue implementation in the Curl programming language 的实现.

关于algorithm - 具有动态项目优先级的优先级队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31967591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com