美文网首页
算法014_堆和堆的向下调整

算法014_堆和堆的向下调整

作者: 为宇绸缪 | 来源:发表于2024-01-31 20:20 被阅读0次

什么是堆

  • 堆:一种特殊的完全二叉树结构
    • 大根堆:一棵完全二叉树,满足任一节点都比其孩子节点大
    • 小根堆:一棵完全二叉树,满足任一节点都比其孩子节点小

大根堆


大根堆

小根堆


小根堆

类比权利结构,比如 国家主席 --> 总理 --> 省长 --> 市长 --> 县长 --> 村民

堆的向下调整性质
(1)假设根节点的左右子树都是堆,但根节点不满足堆的性质
(2)可以通过一次向下的调整来将其变成一个堆

节点的左右子树都是堆,但自身不是堆
2 比 9 和 7 都小,不是堆,但是它下面都满足堆的特性


把 2 拿掉,然后把 9 放到原先 2 的位置

如果把 2 放到空出,它依然比 8 和 5 小,因此 2 不能放在空出,得把 8 移到空白处

2 比 6 和 4 都小,因此 2 不能放在空白处,把 6 提上来

再把 2 放到空白处,此时就满足了大根堆的特性

当根节点的左右子树都是堆的时候,可以通过一次向下的调整来将其变换成一个堆

相关文章

  • 堆调整算法

    堆调整算法 思路 算法将获取到一组数据的最大值(针对大顶堆)或最小值(针对小顶堆)。 基本思想 通过堆排序的调整算...

  • 数据结构与算法之堆排序

    小根堆--向下构建 大根堆--向上构建 不要误解,其实无论向上调整还是向下调整都是可以构建大根堆或者小根堆的。注:...

  • 堆的基本操作与堆排序(C/C++实现)

    原理参考:堆和堆排序原理介绍 堆的基本操作(以最小堆为例) 基本数组的定义 向下调整操作 向下调整操作一般是针对一...

  • 【排序算法详解】堆排序(Python实现)

    代码自带解释,就不多赘述原理了... ? 堆的向下调整性质; ? 当根节点的左右子树都是堆时,可以通过一次向下的调...

  • 堆算法

    示例代码 结果

  • 堆算法

  • Java虚拟机(JVM)调优

    一、Java内存结构 二、堆内存的构成 三、堆内存参数的调整 四、GC如何确定垃圾 五、垃圾收集算法 六、垃圾收集...

  • 堆排序

    1. 排序过程 首先,堆在数组里是一个完全二叉树。我们要首先现在数组上建堆。建堆即使对所有的父结点开始向下调整(...

  • 对”堆”的理解

    对”堆”的理解 向下调整 向上调整堆是一种特殊的完全二叉树,至于什么是完全二叉树自己搜吧,这里就不讲了,看图:堆的...

  • 算法之堆算法

    堆的定义如下:n个元素的序列{k0,k1,...,ki,…,k(n-1)}当且仅当满足下关系时,称之为堆。" ki...

网友评论

      本文标题:算法014_堆和堆的向下调整

      本文链接:https://www.haomeiwen.com/subject/vljaodtx.html