建立最大堆代码解释

//将堆分解为由每个父节点所组成的一个个小堆,然后按照删除堆
//的处理方法来处理
//删除操作代码解析在作者博客里 
Viod BuildHeap(MaxHeap H)
{
	int i;
	for(i=H->Size/2;i>0;i--) //从最后一个父节点开始
		PercDown(H,i);//参数传入的是整个堆和每个小堆的根节点(父结点) 
}
Void PercDown(MaxHeap H,int p) //p为父节点,即每个小堆的根结点 
{
	int Parent,Child;
	ElementType X;
	X=H->Data[p];
	for(Parent=p; Parent*2<=H->Size; Parent=Child)
	{
		Child=Parent*2;
		if((Child!=H->Size)&&(H->Data[Child]<H->Data[Child+1]))
			Child++;
		if(X>H->Data[Child])
			break;
		else
			H->Data[Patent]=H->Data[Child];
	}
	H->Data[Parent]=X;
}

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值