[学习记录]堆
堆是一种特殊的完全二叉树,我们在构造二叉查找树的时候,保持左子树<根节点<右子树,而最大堆和最小堆则是要求根节点大于或小于所有子节点。
由于堆是一种完全二叉树,所以可以用线性数组保存,假设根节点为1,父节点为n,则左子节点为2*n,右子节点为2*n+1
1.堆的插入
统一在数组末端进行插入,然后比较子节点与父节点的大小关系,递归向上调整位置直到满足最大堆或最小堆的要求。
2.堆删除
堆由于根节点具备特殊性质(最大或最小),因此堆中的删除一般指删除根节点,重构时,将数组末端的元素移动至根部,通过堆的规则调整顺序即可。
3.堆排序
将堆的根节点依次弹出。