堆
定义:堆是树型的一对多的数据结构,使用数组实现
- 对应完全二叉树
- 每个节点大于等于或者小于等于它的子节点
二叉树: 每个非叶子节点最多有两个分支节点
满二叉树: 每个非叶子节点都有两个子节点
完全二叉树: 最后一层的最后一个节点的父节点不满足满二叉树之外,其它非叶子节点都满足满二叉树
堆分为最小堆和最大堆
- 最大堆:是一个完全二叉树,父节点不小于子节点
- 最小堆:是一个完全二叉树,父节点不大于子节点
堆的特性:
- 堆的前一半是非叶子节点,后一般是叶子节点
关键操作
上浮、下沉的本质就是父节点与子节点比较,完成最大堆(父节点不小于子节点)或者最小堆(父节点不大于子节点), 上浮和下沉的过程叫做堆化
- 上浮
- 下沉
图解
- 当前节点父节点的索引为:当前节点的索引/2