-
堆是一个完全二叉树;
-
堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值。
每个节点的值都大于等于子树中每个节点值的堆,我们叫做“大顶堆”。对于每个节点的值都小于等于子树中每个节点值的堆,我们叫做“小顶堆”。
完全二叉树比较适合用数组来存储。用数组来存储完全二叉树是非常节省存储空间的。单纯地通过数组的下标,就可以找到一个节点的左右子节点和父节点。数组中下标为i的节点的左子节点,就是下标为i*2的节点,右子节点就是下标为i∗2+1的节点,父节点就是下标为i/2的节点。
1.往堆中插入一个元素(从下往上堆化)
堆中插入数据22
public class Heap {
private int[] a; // 数组,从下标1开始存储数据
private int n; // 堆可以存储的最大数据个数
private int count; // 堆中已经存储的数据个数
public Heap(int capacity) {
a = new i