最小-最大堆的 Java 实现?
2022-09-01 00:20:29
您是否知道一个流行的库(Apache,Google等,集合),它具有用于最小 - 最大堆的可靠Java实现,这是一个堆,它允许查看其最小值和最大值并删除中的元素?O(1)
O(log n)
您是否知道一个流行的库(Apache,Google等,集合),它具有用于最小 - 最大堆的可靠Java实现,这是一个堆,它允许查看其最小值和最大值并删除中的元素?O(1)
O(log n)
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()+" ");
}
}
}
欲了解更多信息,请访问: