栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么在heapify中siftDown优于siftUp?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么在heapify中siftDown优于siftUp?

实际上,使用重复调用构建堆

siftDown
的复杂度为,
O(n)
而使用重复调用构建堆
siftUp
的复杂度为
O(nlogn)

这是由于这样的事实,当您使用

siftDown
时,每次调用所花费的时间 随着节点的深度而 减少
,因为这些节点更靠近叶子。当使用时
siftUp
,交换的 数量 随节点的深度而 增加
,因为如果您处于最大深度,则可能必须一直交换到根。随着节点数量随树的深度呈指数增长,使用
siftUp
给出了更昂贵的算法。

此外,如果您正在使用Max-
heap进行某种排序,请在其中弹出堆的max元素,然后对其进行重新堆砌,使用会更容易实现

siftDown
。您可以
O(logn)
通过弹出max元素,将最后一个元素放在根节点(由于弹出而为空)中,然后重新筛选到正确位置,从而及时重新堆砌。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/616981.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号