堆排序算法

堆排序

堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。

 基本思想

利用大顶堆(小顶堆)堆顶记录的是最大关键字(最小关键字)这一特性,使得每次从无序中选择最大记录(最小记录)变得简单。

将待排序的序列构造成一个最大堆,此时序列的最大值为根节点 ,依次将根节点与待排序序列的最后一个元素交换,再维护从根节点到该元素的前一个节点为最大堆,如此往复,最终得到一个递增序列

假设给定一个组无序数列

创建最大堆

首先我们将数组我们将数组从上至下按顺序排列,转换成二叉树:一个无序堆。

 

 从最后一个堆开始,即90那个堆开始;首先对比左右孩子,如果右孩子比左孩子的值大,交换左右孩子的值,然后比较左孩子与父节点的值,如果左孩子的值小于父节点的值,不用交换,如果发生交换,要检测子节点是否为其他堆的父节点,如果是,递归进行同样的操作。

然后的到最大堆

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值