2022-02-11 堆排序与递归

本文探讨了堆排序的递归思想及其在算法中的应用。通过CLRS的伪代码,阐述了堆排序如何从堆顶节点开始,确保每个节点都小于其左右子节点,从而构建和维护最大堆的过程。堆排序不仅是比较排序的一种,更是递归思想的经典实例,对于理解数据结构和算法有重要价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要:

记录在研究堆排序时的心得.

堆排序:

堆排序也是基于比较的排序, 但是其思想基础来自于递归, 这点非常显著的区别于分治思想.

作为递归思想的经典体现, 有必要从堆排序的过程中总结出经验.

堆排序的伪代码:

CLRS

递归的结束, 关键点在第八行, 只有当找出的最大值的下标不是自己的时候, 才继续进行递归.

如果自己和左节点与右节点之间最大的, 则递归终止.

需要MAX-HEAPIFY只针对单个节点, 而非整个堆, 所以对于整个堆需要递归的调用MAX-HEAPIFY

TAOCP中的流程是这样的

堆排序分析:

从整体上思考, 那么堆排序可以抽象成, 某节点, 与其左节点和右节点之间关系的处理.

从堆顶开始进行, 则递归的处理每个点与其左节点和右节点.

考虑从堆顶开始, 则堆顶节点, 限定为整个堆最小的数据节点

-> 堆顶必须小于其左右两个子节点.

-> 堆顶的左右两个子节点, 必须小于相应节点的左右两个子节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟世者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值