Java 使用 PriorityQueue<>((x, y) -> (y - x)) 可方便实现大顶堆。
默认new的PriorityQueue为小顶堆结构
@Test//这里用来测试小顶堆与大顶堆
public void test(){
Queue<Integer> queue = new PriorityQueue<>();
queue.offer(5);
queue.offer(7);
queue.offer(3);
queue.offer(2);
System.out.println(queue);//[2, 3, 5, 7]默认为小顶堆,由小到大排序
Queue<Integer> queue1 = new PriorityQueue<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
queue1.offer(5);
queue1.offer(7);
queue1.offer(3);
queue1.offer(2);
System.out.println(queue1);//[7, 5, 3, 2]重写堆排序,由大到小排序
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)