在我用来研究算法和数据结构的一本书中,我说最小堆比最大堆更适合实现优先级队列。为什么会这样?
为什么使用堆来实现优先级队列是个好主意?
最佳答案
对于更多的算法,如dijkstra算法,最小堆是必需的,但实际上,如果您只是否定所有元素,那么最小堆和最大堆是等价的。
堆是实现优先级队列的一种简单而有效的方法,因为(根据堆的性质)在添加/删除优先级队列时,堆会保持自身的“排序”,因此可以快速插入和删除最小元素(如果是最小堆)。这些正是优先级队列所需的操作,因此堆非常适合。
关于algorithm - 为什么在实现优先级队列时使用min-heap要优于max-heap?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50432664/