数据结构与算法理论篇--堆排序

这里只谈理论不谈具体代码实现
堆排序是一种选择排序,关键是筛选。进行堆排序要先了解怎么建立堆在了解堆调整。堆又分为大根堆和小根堆,这里以小根堆为例。小根堆的每一个节点都要小于它的两个左右子树的根节点。
建立堆:先按照所给序列(从上到下从左到右)进行初始化成一个二叉树,然后从最后一个非叶子结点开始调整

  1. 调整从第n/2个元素开始,将以该元素为根的二叉树调整为堆
  2. 将以序号为n/2-1的节点为根的二叉树调整为堆
  3. 再将以序号为n/2-2的节点为根的二叉树调整为根
  4. 再以序号为n/2-3的节点为根的二叉树调整为堆

  5. *(这里最后一步应该是n/2-1) *
    最后一步在这里插入图片描述
    堆调整:
  6. 输出堆顶元素之后,以堆中最后一个元素替代之;
  7. 然后将根 节点值与左右子树的根节点进行比较,并与其中小者进行交换
  8. 重复上述操作,直至叶子结点,将新得到的对,称这个对顶至叶子的调整过程称为筛选。大根堆思路一样
    在这里插入图片描述这样一步一步就完成了排序!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值