• 概念

      堆是一种特殊的完全二叉树。

    大根堆(大顶堆)

      一棵完全二叉树,满足任一节点都比起孩子节点大。如下图所示:

    小根堆(小顶堆)

      一棵完全二叉树,满足任一节点都比其孩子节点小。

     

    堆的向下调整性质

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

      例如下图:

      根节点的两个子节点9和7中选大的9作为根节点;再比较2与8和5的大小,发现2比这两个都小,从8和5中选较大的8;然后再2与6和4的大小,发小2比6和4都小,选6和4中的6作为节点,将2放置到原来6的位置,这样就完成了对的向下调整。

    构造堆

      从最后一个非叶子节点开始调整,依次向前调整。如下图所示:

       从3节点开始调整,将3和5交换位置,等到新的完全二叉树;再调整9节点,接下来是1节点、8节点、6节点;就这样一步步的调整完成,构建大根堆。

     排序

       将上一步调整得到的大根堆出数,第一次出9,然后将最后一个节点放到根节点,然后向下调整一次。完了再充根节点出数,再取最后一个,以此类推,直到所有的数都出完,这样就得到了一个有序的列表。

  • 相关阅读:
    仿造email后缀自动添加功能(1)
    仿造email后缀搜索功能(2)
    取出input内的空格
    小知识点
    关于闭包
    js清除浏览器缓存的几种方法
    动态生成模板(模板生成器)
    安卓端调用h5界面js方法和ios端调用h5界面js方法
    linux 命令
    如何做个好员工
  • 原文地址:https://www.cnblogs.com/ZN-225/p/10624568.html
Copyright © 2020-2023  润新知