algorithm - 为什么最小堆比最大堆更适合实现优先级队列?
问题描述
在我用来研究算法和数据结构的一本书中,它指出最小堆比最大堆更适合实现优先级队列。为什么会这样?
为什么使用堆来实现优先级队列是个好主意?
解决方案
更多算法需要最小堆,例如 Dijkstra 的。但实际上,如果您只是否定所有元素,则 min-heap 和 max-heap 是等价的。
堆是实现优先级队列的一种简单有效的方法,因为(根据堆的性质)它在您添加/删除时保持自身“排序”,因此可以快速插入和删除最小元素(如果最小堆)。这些正是优先级队列需要的操作,因此堆非常适合。
推荐阅读
- type-conversion - 将浮点数写入 EEPROM 将浮点数转换为 uint8_t
- android - wifimanager.connectioninfo.ssid 返回错误的 SSID
- android - 如何使 switchButton 在 jetPack 数据存储中进行更改并采用数据各自值的位置?
- r - 为什么 raster::extract 在使用缓冲区时会返回多个值?
- python - 从 zip 文件夹中的文件夹导入特定文件并将其连接到一个 Dataframe
- javascript - 有没有办法从 child_process.execFile 生成的 python 脚本中获取“实时”输出行,而无需每次都刷新标准输出?
- atom-editor - atom 无法识别根目录
- c# - System.ArgumentException HResult = 0x80070057 消息 = 参数无效。来源 = System.Drawing。为什么?
- bash - 使用变量执行 Bash 命令 (Azure CLI)
- anaconda - 如何在 conda.yaml 中从 GitLab 注册表安装自定义包