堆顶元素和排序
来源:8-8 Java中的PriorityQueue
坤0
2021-03-18
波波老师,用Java的优先队列比较器实现是堆元素的降序排列,为什么到优先队列里面弹出栈顶元素就是最小值
用我们实现的优先队列的堆元素的比较方法是升序,为啥到优先队列里面弹出栈顶元素也是最小值?升序降序的堆元素在优先队列里面怎么组织?
这个实在想不太明白
写回答
1回答
-
liuyubobobo
2021-03-18
比较器并没有实现“升序”或者“降序”。比较器只是在定义,对于两个元素,什么叫大,什么叫小。
Java 的 PriorityQueue 是一个最小堆。但是我们可以通过改变元素定义的方式,将它变为最大堆。比如当我们定义 10 比 9 小;9 比 8 小;数字越高,表示它越小的时候,在这个定义下,相当于把一个最小堆的实现变成了最大堆。
继续加油!:)
00
相似问题