【发布时间】:2011-04-27 19:41:37
【问题描述】:
我正在考虑实现一个带有附加要求的优先级队列,一个查找/搜索功能,它将判断一个项目是否在队列中的任何位置。所以函数将是:插入、删除和查找。
我不确定我应该使用堆还是自平衡二叉搜索树。看起来 PQ 通常是用堆实现的,但我想知道使用二叉搜索树是否有任何优势,因为我还需要那个 find 函数。
此外,平均而言,我将执行更多的插入操作而不是删除操作。我也在考虑d-ary heap。基本上,每一秒都很重要。
谢谢!
【问题讨论】:
-
“平均而言,我会进行更多的插入操作而不是删除操作”——真的是您的意思吗?如果是这样的话,你最终会耗尽内存,不是吗?
-
优先级队列用于寻路算法。当我达到我的目标时,我可以删除优先队列的剩余部分,而无需任何重新平衡。
-
@paxdiablo - 反过来根本不可能......不是每个程序都是长期运行的
-
您需要准确查找元素,还是只检查它是否存在于队列中?
标签: optimization types heap binary-tree priority-queue