• 概念

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

    大根堆(大顶堆)

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

    小根堆(小顶堆)

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

     

    堆的向下调整性质

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

      例如下图:

      根节点的两个子节点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,然后将最后一个节点放到根节点,然后向下调整一次。完了再充根节点出数,再取最后一个,以此类推,直到所有的数都出完,这样就得到了一个有序的列表。

  • 相关阅读:
    594 One Little, Two Little, Three Little Endians
    提出js框
    从4个细节做好查询语句优化
    Windows Sever2008 R2 iis部署
    收集 常用CSS样式的笔记
    html常用标签介绍
    加密URL
    JQuery UI选项卡插件及图片轮播插件
    推荐两款富文本编辑器:NicEdit和Kindeditor
    合并一条SQL语句 根据不同条件
  • 原文地址:https://www.cnblogs.com/ZN-225/p/10624568.html
Copyright © 2020-2023  润新知