[学习记录]堆

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

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

1.堆的插入

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

2.堆删除

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

3.堆排序

  将堆的根节点依次弹出。

猜你喜欢

转载自www.cnblogs.com/trickofjoker/p/10505519.html