堆排序全解析

本文详细介绍了堆排序的核心——构造大顶堆,并通过两种方式展示了如何建立大顶堆。堆排序过程中,通过不断抽取堆顶元素并重新构建大顶堆实现排序。文中还解释了非叶子节点数量为数组长度的一半的原因,并提供了相应的代码实现。
摘要由CSDN通过智能技术生成

目录

构造大顶堆

第一种方式

第二种方式

堆排序就是不断抽离堆顶元素(剩余队列中最大者),继续构造大顶堆

非叶子节点有多少个,为什么是N(数组长度)/2

代码


堆排序核心在于构造堆,本文以构造大顶堆为例

说白了就是完全二叉树,

除最后一层外,其余各层都是满的,每层数量为(2^(h-1))

最后一层必须从左到右依次放置不能留空

构造大顶堆

     大顶堆,就是每个父节点都比子节点要大,即任何子树都是大顶堆

     比如给你数组,12345

  遍历所有非叶子节点都与其孩子进行比较,子节点大于父节点时,进行替换

遍历可以从下到上,也可以从上到下。

本文采用从下到上,从右到左的方式遍历,数组指针向左移动即可,每次遍历比较确保比较后的所有子树都是大顶堆。

第一种方式

第二种方式

在每次调整堆时,非叶子节点都与其孩子进行比较

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值