算法导论第六章6.2维护堆的性质课后答案

6.2-1参照图6.2的方法,说明MAX-HEAPIFY(A,3)在数组A={27,17,3,16,13,10,1,5,7,12,4,8,9,0}
上的操作过程。


操作过程参照书中图6.2,非常类似。


6.2-2参考过程MAX-HEAPIFY,写出能够维护相应最小堆的MIN-HEAPIFY(A,i)的伪代码,并比较
MIN-HEAPIFY与MAX-HEAPIFY的运行时间。


把原书伪代码A[l]>A[i]与A[r]>A[largest]都改成小于就OK了。


6.2-3当元素A[i]比其孩子的值都大时,调用MAX-HEAPIFY(A,i)会有什么结果?


调用后,原最大堆不会有任何元素位置的改变。


6.2-4当i>A.heap-size/2时,调用MAX-HEAPIFY(A,i)会有什么结果?


那么i都是叶子结点,所以原最大堆也不会改变。


6.2-5MAX-HEAPIFY的代码效率较高,但第10行中的递归调用可能例外,它可能使某些编译器产生
低效的代码。请用循环控制结构取代递归,重写MAX-HEAPIFY代码。

MAX-HEAPIFY(A,i)
while (i<=A.heap-size/2)//由于6.2-4知道,i>A.heap-size/2以后,最大堆不会有任何改变。
{                       //这样也可以减少循环次数。
  l=LEFT(i)
  r=RIGH
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值