堆顶元素和排序

来源:8-8 Java中的PriorityQueue

坤0

2021-03-18

波波老师,用Java的优先队列比较器实现是堆元素的降序排列,为什么到优先队列里面弹出栈顶元素就是最小值
用我们实现的优先队列的堆元素的比较方法是升序,为啥到优先队列里面弹出栈顶元素也是最小值?升序降序的堆元素在优先队列里面怎么组织?
这个实在想不太明白

写回答

1回答

liuyubobobo

2021-03-18

比较器并没有实现“升序”或者“降序”。比较器只是在定义,对于两个元素,什么叫大,什么叫小。


Java 的 PriorityQueue 是一个最小堆。但是我们可以通过改变元素定义的方式,将它变为最大堆。比如当我们定义 10 比 9 小;9 比 8 小;数字越高,表示它越小的时候,在这个定义下,相当于把一个最小堆的实现变成了最大堆。


继续加油!:)

0
0

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程