你知道一个流行的库(Apache、谷歌等,集合)有一个可靠的最小-最大堆的 Java 实现,这是一个允许在 O(1)
中查看其最小值和最大值的堆并删除 O(log n)
中的一个元素?
原文由 Yuval Adam 发布,翻译遵循 CC BY-SA 4.0 许可协议
你知道一个流行的库(Apache、谷歌等,集合)有一个可靠的最小-最大堆的 Java 实现,这是一个允许在 O(1)
中查看其最小值和最大值的堆并删除 O(log n)
中的一个元素?
原文由 Yuval Adam 发布,翻译遵循 CC BY-SA 4.0 许可协议
Java 有很好的工具来实现最小堆和最大堆。我的建议是使用优先队列数据结构来实现这些堆。要使用优先队列实现最大堆,请尝试以下操作:
import java.util.PriorityQueue;
public class MaxHeapWithPriorityQueue {
public static void main(String args[]) {
// create priority queue
PriorityQueue<Integer> prq = new PriorityQueue<>(Collections.reverseOrder());
// insert values in the queue
prq.add(6);
prq.add(9);
prq.add(5);
prq.add(64);
prq.add(6);
//print values
while (!prq.isEmpty()) {
System.out.print(prq.poll()+" ");
}
}
}
要使用优先队列实现最小堆,试试这个:
import java.util.PriorityQueue;
public class MinHeapWithPriorityQueue {
public static void main(String args[]) {
// create priority queue
PriorityQueue< Integer > prq = new PriorityQueue <> ();
// insert values in the queue
prq.add(6);
prq.add(9);
prq.add(5);
prq.add(64);
prq.add(6);
//print values
while (!prq.isEmpty()) {
System.out.print(prq.poll()+" ");
}
}
}
欲了解更多信息,请访问:
原文由 Mohammad 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答1.5k 阅读✓ 已解决
4 回答1.3k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答745 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
来自番石榴:
MinMaxPriorityQueue
。