优先队列&最大堆
1. 采用什么数据结构存储 普通非顺序线性结构 添加数据 O(1) 获取元素 O(n) 利用树形结构,实现一个堆 父元素比左右子树元素的值都大 堆的节点层次不能决定他的大小(不一定层次越低值越大)、 最大堆是一个完全二叉树 2.最大堆的实现-数组 用数组实现可以不使用0号位置 parentIdex = i / 2 leftChild = i / 2 rightChild = i / 2 + 1 2.1 利用自定义数组实现存储 此处可替换为原生数组 public class MaxHeap < E extends Comparable < E > > { private Array < E > data ; public MaxHeap ( int capacity ) { data = new Array < > ( capacity ) ; } public MaxHeap ( ) { data = new Array < > ( ) ; } // 返回堆中的元素个数 public int size ( ) { return data . getSize ( ) ; } // 返回一个布尔值, 表示堆中是否为空 public boolean isEmpty ( ) { return data . isEmpty ( ) ; } // 返回完全二叉树的数组表示中