0
点赞
收藏
分享

微信扫一扫

更新大根堆

蓝莲听雨 2022-02-06 阅读 35
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;
	}

}
举报

相关推荐

0 条评论