public static void heapInsert(int[] arr,int index){
while(arr[index] > arr[index - 1] / 2){//如果index来到0位置,(index-1)/2也是0位置
swap(arr,index,(index-1)/2);
index = (index - 1) / 2;
}
}
//某个数在index位置能否往下移动
public static void heapify(int[] arr,int index,int heapSize){
int left = index * 2 + 1;//左孩子的下标
while(left < heapSize){//下方还有孩子的时候
//两个孩子中谁的值大,把下标给largest
int largest = left + 1 < heapSize && arr[left + 1] > arr[left]
? arr[left + 1] : arr[left];
//父和较大的孩子之间,谁的值大,把下标给largest
largest = arr[largest] > arr[index] ? largest:index;
if(largest == index){
break;
}
swap(arr,largest,index);
index = index * 2 + 1;
}
}