算法与数据结构(python):堆与堆排序

本文介绍了堆的概念,包括最大堆和最小堆,并通过数组表示堆。详细解析了堆排序的原理,即通过堆顶元素与末尾元素交换并调整堆,逐步完成排序。示例展示了对序列[5,6,8,1,2,4,9]的堆排序过程。" 126280835,4946447,理解ARM Linux设备树DTS,"['arm开发', 'linux', '设备树', '中断处理', '编译工具']
摘要由CSDN通过智能技术生成

提示:专栏解锁后,可以查看该专栏所有文章。



什么是堆

     堆是一种完全二叉树,有最大堆和最小堆两种。

  • 最大堆:对于每个非叶子节点V, V的值都比它的两个孩子大,称为最大堆特性(heap orderproperty)最大堆里的根总是存储最大值,最小的值存储在叶节点。
  • 最小堆:和最大堆相反,每个非叶子节点V, V的两个孩子的值都比它大。

堆的表示

     之前我们用一个节点类和二叉树类表示树,这里其实用数组就能实现堆。

仔细观察下,因为完全二叉树的特性,树不会有间隙。对于数组里的一个下标i,我们可以得到它的父亲和孩子的节点对应的下标:

parent=int((i
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

总裁余(余登武)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值