当前位置:   article > 正文

关于堆排序初始建堆的时间复杂度问题_构建n个记录的初始堆时间复杂度

构建n个记录的初始堆时间复杂度

堆排序初始建堆的时间复杂度,数据结构算法上写的时间复杂度是O(nlogn),而在网络上搜索,大部分人说是O(n),其实这是一个自顶向下建堆和自底向上建堆的问题

自顶向下建堆

自顶向下建堆的情况可以参考堆排序初始建堆后面的步骤
即从根节点开始,逐个比较替换,直到根节点走过的路径符合堆的定义,然后重复此步骤,比较结点的左右子树。
每个子树的根节点替换的时间复杂度都为O(logn),所以总的时间复杂度为O(nlogn)

自底向上建堆

自底向上建堆是网络上普遍的建堆方式,其时间复杂度为O(n)
自底向上建堆就是从叶子结点的父节点开始,每个结点和他的子结点进行比较和交换,由于每个结点需要和他的子结点比较一次,同时和他的父结点比较一次,所以结果是O(3n),也就是O(n)
参考网址:https://www.cnblogs.com/chengxiao/p/6129630.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/900767
推荐阅读
相关标签
  

闽ICP备14008679号