堆(优先队列)的实现(大根堆)
public class MyHeap {
//向下调整
//前提条件是要求被调整节点左右子树都已经是堆了
//从indexOfParent这个位置开始向下调整
//按照大根堆来实现
public static void shiftDown(int[] array,int heapSize,int indexOfParent){
int parent=indexOfParent;
int child=parent*2+1;
while(child<heapSize){
//寻找左右子树中较大的值
if(child+1<heapSize && array[child+1]>array[child]){
child=child+1;
}
//此时保障child指向左右子树较大的那个
//拿父节点与其比较,将其转化为大根堆
if(array[parent]<array[child]){
swap(a