建堆是 O(n) ,图形化证明

建堆的复杂度先考虑满二叉树,和计算完全二叉树的建堆复杂度一样。
对满二叉树而言,第 i 层(根为第 0 层)有 2^i 个节点。
由于建堆过程自底向上,以交换作为主要操作,因此第 i 层任意节点在最不利情况下,需要经过 (n−i)
次交换操作才能完成以该节点为堆根节点的建堆过程。

元素总个数N,完全二叉树层数n,则有 n = logN
利用N的二进制表示,对总操作数进行图形化推导
在这里插入图片描述
T ( N ) = 2 n + 1 − n − 2 = N ∗ ( 1 − l o g N N − 2 N ) ≈ N T(N) = 2^{n+1} - n - 2 = N * (1 - \frac{logN} { N} - \frac{2} {N}) ≈ N T(N)=2n+1n2=N(1NlogNN2)N

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值