首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自下而上HeapSort与自上而下HeapSort (性能方面)

自下而上HeapSort与自上而下HeapSort (性能方面)
EN

Stack Overflow用户
提问于 2018-05-28 10:19:07
回答 1查看 2.8K关注 0票数 1

自下而上的HeapSort和自上而下的HeapSort之间的性能差异是什么?

EN

回答 1

Stack Overflow用户

发布于 2018-11-28 08:05:36

堆是一棵二叉树;因此,我们知道它有log深度,每个级别有2^i个节点。级别0(根)有1个节点,级别1有2个节点,级别2有4个节点,依此类推。

现在考虑一下你提到的两种方法:

对于自下而上,我们将节点插入到底部,并让它们每次在堆中“冒泡”。相反,对于自上而下,我们让节点“倒下”到它们正确的位置。哪一个更有效率?

让我们考虑一下最坏的情况:

在自下而上的模式中,每个节点都可以上升到最高级别。在级别1,这需要一个交换(在两个节点上);在级别2,这需要两个(在四个节点上)...一旦我们到达最后一级,我们必须进行log n交换(在相当大的n/2个节点上)!这给了我们O( n )效率。

自上而下:在每个级别,任何节点都可以落到树的底部(log n交换)。它与自下而上的区别在于,随着最大坠落距离的增加,受其影响的潜在节点数量会减少。级别0是唯一可以落入log n的级别,并且只有一个节点(而不是自下而上的n/2 )。因此,所有“下降”的总和是O(n),它是更有效的算法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50558321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档