Java 大小根堆的实现
Posted 上帝爱吃苹果
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 大小根堆的实现相关的知识,希望对你有一定的参考价值。
Heap是一种数据结构它是一个完全二叉树具有以下的特点:
- Min-heap: 父节点的值小于或等于子节点的值;
- Max-heap: 父节点的值大于或等于子节点的值;
public class minAndMaxheap {
//大根堆和小根堆的实现
//优先级队列默认是小根堆的实现
static class MaxheapComparator implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
}
public static void main(String[] args) {
int[] arrForHeap = { 3, 5, 2, 7, 0, 1, 6, 4 };
Queue<Integer> minHeap = new PriorityQueue<>();
//大根堆实现
Queue<Integer> maxHeap = new PriorityQueue<>(new MaxheapComparator());
for (int i =0;i<arrForHeap.length;i++) {
minHeap.add(arrForHeap[i]);
maxHeap.add(arrForHeap[i]);
}
while (!minHeap.isEmpty()) {
System.out.print(minHeap.poll()+" ");
}
System.out.println();
while (!maxHeap.isEmpty()) {
System.out.print(maxHeap.poll()+" ");
}
}
}
result:
0 1 2 3 4 5 6 7
7 6 5 4 3 2 1 0
Process finished with exit code 0
以上是关于Java 大小根堆的实现的主要内容,如果未能解决你的问题,请参考以下文章
力扣347. 前 K 个高频元素与C++stl优先队列(大小根堆)的自定义排序用法总结