最大最小堆堆顶元素

来源:8-8 Java中的PriorityQueue

厥~~~

2019-10-03

老师,最大堆堆顶元素是优先级最高的,每次poll()或者remove()都是取出优先级最高的元素。
最大堆堆顶元素是优先级最小的的,每次poll()或者remove()都是取出优先级最小的元素。
所以堆顶元素的大小不是按照元素本身的大小,是按照优先级来排序的。
最小堆堆顶元素是优先级最小的,每次删除是取优先级最小的。
最大堆堆顶元素是优先级最大的,每次删除是取优先级最大的。
上面判断对么?

写回答

1回答

liuyubobobo

2019-10-04

我被你的描述搞晕了。


整体来讲,最大堆堆顶是最大的元素,最小堆堆顶是最小的元素。我的建议是,把最大和最小,与优先级这个概念分开来看。


因为大多数时候,大小是有绝对的概念的。但是优先级不是。比如捐款,富人捐得多一些,所以,你的钱越多,优先级越高;比如扶贫,穷人获得的资助多一些,所以你越穷,优先级越高。因此,优先队列背后可以是最大堆,也可以是最小堆,看你的应用场景。


我觉得我上面说的很清楚,大小和优先级是两个尺度的概念,你应该可以理解。但如果你问我的是一个考试题目,那我也不知道。需要问出题人。应试和理解知识完全不同。考试分数高的人可能对考试的知识完全不理解;对知识理解充分的人也不一定考试分数高。


继续加油!:)

1
1
厥~~~
非常感谢!
2019-10-05
共1条回复

玩转数据结构

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

6221 学习 · 1704 问题

查看课程