Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我注意到 Java(PriorityQueue、Guava MinMaxPriorityQueue 等)和 Python(heapq)中堆的大多数默认实现不支持CLRS中描述的堆的增加键/减少键操作。但是,我还没有找到解释为什么会这样。有谁知道/是文档中某处描述的基本原理?
要修改堆中特定元素的键,您的选择基本上是:
HashMap
此外,JavaComparator期望是无状态的——对于相同的输入,比较操作应该始终具有一致的输出——并且在大多数需要使用优先级队列的算法中,很少使用修改键,也很少严格必要。
Comparator