《算法(第4版)》--堆排序

最后一个非叶子节点索引公式推导:

如果根节点的索引为0,那么最后一个非叶子节点的索引为 (N / 2) - 1。N为节点的数量。

最后一个节点的索引为 N - 1。最后一个节点的父节点即为最后一个非叶子节点。

已知最后一个节点的索引,以此推导出其父节点索引。

如果N为奇数,假设最后一个非叶子节点的索引为k1,那么有 2 * k1 + 2 = N - 1,所以 \small k 1= \frac{N}{2} - 1 - \frac{1}{2}

如果N为偶数,假设最后一个非叶子结点的索引为k2,那么有 2 * k2 + 1 = N - 1,所以\small k2 = \frac{N}{2} - 1

我们使用\small k2 = \frac{N}{2} - 1,并对其取整,作为统一的公式,

当N为偶数时k2是正确值,

当N为奇数时,使用k2比正确值大1/2。但是向下取整后,\small \left \lfloor k2 \right \rfloor即为正确值。所以使用[K2]是可以的。

[K2]对于N为偶数和奇数都可以。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值