最小堆与最大堆

priority_queue的底层是vector

queue的底层是deque

堆是完全二叉树。

最小堆就是父节点小于子节点。

插入时每次加到最后,再从底向上更新一次。

删除时删除根,并将最后一个元素取代掉根,从底向上更新一次。

更新时是对于每一个节点所对应的堆进行更新。

插入就是加到最后,向上更新

删除就是交换根和最后一个元素,然后删掉“根”,向下更新

priority_queue传入的比较函数实际上是一个类型,是一个仿函数。

当一次性通过n个元素建堆时应该从下往上down(),这样的复杂度可以降到O(n)。


最小堆与最大堆
https://lhish.github.io/project/最小堆与最大堆/
作者
lhy
发布于
2024年6月30日
许可协议