学习笔记-堆

学习笔记-堆堆是每个双亲节点都大于 小于 子节点的特殊完全二叉树 将根节点最大的堆叫做最大堆或大根堆 根节点最小的堆叫做最小堆或小根堆 大顶堆与小顶堆堆的性质堆中某个节点的值总是不大于或不小于其父节点的值 堆总是一棵完全二叉树

大家好,欢迎来到IT知识分享网。

堆是每个双亲节点都大于(小于)子节点的特殊完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。

学习笔记-堆

大顶堆与小顶堆

堆的性质

  • 堆中某个节点的值总是不大于或不小于其父节点的值;
  • 堆总是一棵完全二叉树。

堆的存储方式

从堆的概念可知,堆是一棵完全二叉树,因此可以层序的规则采用顺序的方式来高效存储.

堆的操作和实现

堆化

在插入或删除操作后需要进行调整,让其重新满足堆的特性,这个调整的过程叫做堆化(heapify)。

上浮:当前元素不断向上和父节点比较大小

  • 大顶堆:当前元素比父节点大,交换,让大的节点上去
  • 小顶堆:当前元素比父节点小,交换,让小的节点上去

下沉:当前元素不断向下和两个孩子节点比较大小

  • 大顶堆:当前元素与子节点中较大的比,比子节点小交换,让小的节点下去
  • 小顶堆:当前元素与子节点中较小的比,比子节点大交换,让大的节点下去

插入

从下往上的堆化,在堆的尾部插入,满足完全二叉树条件,再进行堆化。

学习笔记-堆

删除

把最后一个元素移到根节点的位置,满足完全二叉树的条件,再进行堆化

堆的应用

优先队列

堆是实现优先级队列最直接、最高效的方法。一般队列出队顺序只取决于入队顺序,而优先级队列的出队顺序总是按照元素自身的优先级。往优先级队列中插入一个元素,就相当于往堆中插入一个元素;从优先级队列中取出优先级最高的元素,就相当于取出堆顶元素

堆排序

实现堆排序可分解为两个步骤,建堆和排序

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/177901.html

(0)
上一篇 2025-05-05 10:20
下一篇 2025-05-05 10:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信