算法导论第三版习题6.3

6.3-1

(a) A.length=9,故从i=A.length/2=4开始调用MAX-HEAPIFY(A,i),A[4]<A[9]<A[8],故交换A[4]A[8]得到新的序列A1={5,3,17,22,84,19,6,10,9}
(b) 接下来调用MAX-HEAPIFY(A,3),A[7]<A[3]<A[6],故交换A[3]A[6]得到A2={5,3,19,22,84,17,6,10,9}
(c) 第三步调用MAX-HEAPIFY(A,2),A[2]<A[4]<A[5],故交换A[2]A[5]得到A3={5,84,19,22,5,17,6,10,9}
(d) 第四步调用MAX-HEAPIFY(A,1),A[1]<A[3]<A[2],故交换A[1]A[2]得到A4={84,5,19,22,3,17,6,10,9};接下来由于A[2]<A[4],故又调用MAX-HEAPIFY(A,2),交换A[2]A[4]得到A′′4={84,22,19,5,3,17,6,10,9};在调用MAX-HEAPIFY(A,4)交换A[4]A[8]最后得到A4={84,22,19,10,3,17,6,5,9}

6.3-2

因为iA.length/2递减到1的过程中,能够依次保持以下标大于i的节点为根结点的子树都是最大堆,从而保持循环不变式

6.3-3

首先包含n个元素的堆高度为lgn,则当高度为h的这一层节点全满时节点最多,此时

N=2lgnh>2lgn1h=n/2h+1

故至多有n/2h+1个节点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值