java队列优先级_优先级队列-Java的PriorityQueue与最小堆有何不同?
來自Java文檔
表示為平衡二進制堆的優先級隊列:queue [n]的兩個子級是queue [2 * n + 1]和queue [2 *(n + 1)]。 優先級隊列由比較器或元素的自然順序進行排序。
這是使用PriorityQueue的最大堆和最小堆的工作代碼-
class HeapDemo {
private final static int HEAP_SIZE = 10; //size of heap
//INNER CLASS
static class maxHeapComparator implements Comparator {
@Override
public int compare (Integer x, Integer y) {
return y-x; //reverse order
}
}
public static void main(String[] args) {
PriorityQueue minHeap = new PriorityQueue<>(HeapDemo.HEAP_SIZE);
PriorityQueue maxHeap = new PriorityQueue<>(HeapDemo.HEAP_SIZE, new maxHeapComparator());
for(int i=1; i<=HeapDemo.HEAP_SIZE; ++i){
int data = new Random().nextInt(100) +1; //number between 0 to 100
minHeap.add(data);
maxHeap.add(data);
}
System.out.print("\nMIN Heap : ");
Iterator iter = minHeap.iterator();
while(iter.hasNext()){
System.out.print(iter.next() + " ");
}
System.out.print("\nMAX Heap : ");
iter = maxHeap.iterator();
while(iter.hasNext()) {
System.out.print(iter.next() + " ");
}
}
}
樣本輸出/輸出:
MIN Heap : 20 32 37 41 53 91 41 98 47 86
MAX Heap : 98 91 41 53 86 20 37 41 32 47
總結
以上是生活随笔為你收集整理的java队列优先级_优先级队列-Java的PriorityQueue与最小堆有何不同?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【OpenCV 例程200篇】45. 图
- 下一篇: easyswoole数据库连接池_Eas