映射也是一个集合
集合相当于映射value为空的时候
堆和优先队列
普通队列:先进先出;后进后出
优先队列:出队和入队顺序无关,和优先级有关(因为动态,所以使用优先队列比较合理)
二叉堆是一颗完全二叉树(
不一定是满二叉树(满二叉树:除了叶子结点,其他节点都不为空);
最后一层从左到右放置,右下角有可能是空的;
堆中某个节点的值总是不大于其父亲节点的值;
堆中某个节点的值总是不大于其父亲节点的值;
最大堆(相应可以定义最小堆);
堆中层次低的不一定大于层次高的值,没有直接关系,只能确定小于其父亲节点的值
)
Array类的添加
public Array(E[] arr){
}
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();
}
//返回完全二叉树的数组表示,一个索引所表示的元素的父亲点的索引
private int parent(int index){
if (index ==