Paul Shan
2021-12-25
堆排序并不是稳定排序,所以相同序号没法做到先进后出,如果要保证先进先出,一种方法是再加一层,每个节点用一个队列而不是简单的节点表示,这样所有权值相同的节点就进入了一个队列,然后用这个队列保证先进先出。还有一种方法是修改对键值的定义,也就是把时间因素考虑近来,让时间作为排序的次要因子,这样就可以保证键值唯一。
作者回复: 正解
共 5 条评论
17
丶
2021-12-28
昊哥,能不能讲解一下每篇文章后问题的答案呀?感觉自己心里有了答案,但是没有一个参考,总感觉不大对
作者回复: 好的好的 不过一般都会有同学回复的还不错的 我回头看看是不是可以置顶之类的~
2
muyinliu
2022-03-21
这也说明 PQ 默认情况下实现的是小顶堆。 --- 是否可以考虑把图都换成小顶堆的图,我第一次看本章的时候很疑惑,总觉得图和代码对不上号
作者回复: 好的 我之后修改一下~
ZeroIce
2022-02-07
上面那个满二叉树是不是和完全二叉树混淆?
共 1 条评论
3
余先声
2022-05-15
要保证相同优先级的元素也需要保证FIFO的特性,那么可以新引入一个自增id的概念。比较器当判断优先级相等的时候,就按id的大小进行排序,id小的在前,大的在后
1
蒋某人尚需顿悟
2023-04-19
来自上海
java堆内存和这个堆结构有什么联系吗
共 2 条评论
SevenHe
2022-03-22
一点收获,在遇到满二叉树或稠密二叉树的场景时,可以考虑用数组来存放,有如下优势: 1. 空间利用率高,比起指针的方式,也更满足内存局部性原理 2. 无需后继节点指针,内存占用也更小 3. 寻址效率高,结合位运算即可快速寻址