java实现大顶堆
时间: 2023-08-16 14:06:28 浏览: 101
在Java中可以使用PriorityQueue(优先队列)来实现大顶堆。
PriorityQueue是一个基于优先级的无界优先队列,它的元素按照自然顺序进行排序,或者根据构造函数中传递的Comparator进行排序。它是线程不安全的,不能保证队列中的元素是按照优先级的顺序排列的。
下面是使用PriorityQueue实现大顶堆的示例代码:
```java
import java.util.PriorityQueue;
public class MaxHeap {
public static void main(String[] args) {
PriorityQueue<Integer> maxHeap = new PriorityQueue<>((a, b) -> b - a);
maxHeap.offer(3);
maxHeap.offer(1);
maxHeap.offer(5);
maxHeap.offer(2);
maxHeap.offer(4);
while (!maxHeap.isEmpty()) {
System.out.print(maxHeap.poll() + " ");
}
}
}
```
输出结果为:5 4 3 2 1
在这个示例中,我们创建了一个PriorityQueue对象,并传递了一个Comparator来实现大顶堆。然后我们向队列中添加了一些元素,最后按照优先级(即值大小)从大到小依次取出元素并输出。
阅读全文