zoukankan      html  css  js  c++  java
  • [学习记录]堆

    堆是一种特殊的完全二叉树,我们在构造二叉查找树的时候,保持左子树<根节点<右子树,而最大堆和最小堆则是要求根节点大于或小于所有子节点。

    由于堆是一种完全二叉树,所以可以用线性数组保存,假设根节点为1,父节点为n,则左子节点为2*n,右子节点为2*n+1

    1.堆的插入

      统一在数组末端进行插入,然后比较子节点与父节点的大小关系,递归向上调整位置直到满足最大堆或最小堆的要求。

    2.堆删除

      堆由于根节点具备特殊性质(最大或最小),因此堆中的删除一般指删除根节点,重构时,将数组末端的元素移动至根部,通过堆的规则调整顺序即可。

    3.堆排序

      将堆的根节点依次弹出。

  • 相关阅读:
    2019 ICPC Universidad Nacional de Colombia Programming Contest
    AcWing
    模板
    AcWing
    AcWing
    AcWing
    模板
    模板
    自考新教材-p340
    自考新教材-p339
  • 原文地址:https://www.cnblogs.com/trickofjoker/p/10505519.html
Copyright © 2011-2022 走看看