排序6:堆排序

排序6:堆排序

6.1概念以及分类
6.1.1树(学堆需要的基础)
在这里插入图片描述
度的概念:出度(树中一个数字下面的数如:上图2的出度为4,4的出度为0),入度(上一个数)
二叉树:整个树中最多有两个分叉(出度)
子节点,父节点:2,3是1的孩子节点分别为左孩子,右孩子。1是2,3的父节点(或双亲节点),2是4,5的父节点。
叶子结点:4,5,6,8出度为0成为叶子结点
6.1.2堆
大根堆:父节点均大于子节点
小根堆:父节点均小于子节点
例1:线性1 2 3 4 5 6 7 8画成树,数字从左向右,从上到下安排到各个树的节点,如下图,为小根堆
在这里插入图片描述例2:下图既有父节点大于子节点又有子节点大于父节点,因此不是堆
在这里插入图片描述
6.2堆排序原理
设原数据:
在这里插入图片描述
化为树
在这里插入图片描述
如果是升序排序,调整为大根堆:从最后一层二叉树往上
①最后一层二叉树调整:(红色小字体为下标)
在这里插入图片描述
在大根堆中最大值就是树根
② 最后一层和倒数第二层调整(内部一次调整是从上往下交换父节点小于子节点的数字:1和21交换再1和6交换):
在这里插入图片描述③三层二叉树整体调整:(21和9交换)
在这里插入图片描述把树根的值与待排序最后一个值交换,交换后21有序
在这里插入图片描述交换后破坏了大根堆,再次调整为大根堆(排除已经有序的21),因为大部分保持大根堆,这次调整从整体调整即可
在这里插入图片描述倒数第二大值12出现,与除21外最后的待排数字3交换
在这里插入图片描述再整体调整为大根堆并与待排最后的数字交换(待排指的是不含已经排好的数字)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值