如果我想在最大堆中添加和删除值,我会首先将值添加到堆的末尾,然后根据需要向上渗透。然后我会通过保存根节点来删除该值,然后在最大堆的末尾取值,将其移动到顶部,然后根据需要向下渗透,最后返回从前面保存的值。
这涉及大量的比较和值交换。是否有一种算法具有类似的复杂度类但对于首先添加然后删除最大堆中的值更有效?
如果我想在最大堆中添加和删除值,我会首先将值添加到堆的末尾,然后根据需要向上渗透。然后我会通过保存根节点来删除该值,然后在最大堆的末尾取值,将其移动到顶部,然后根据需要向下渗透,最后返回从前面保存的值。
这涉及大量的比较和值交换。是否有一种算法具有类似的复杂度类但对于首先添加然后删除最大堆中的值更有效?