Establish a maximum heap code interpreter

//将堆分解为由每个父节点所组成的一个个小堆,然后按照删除堆
//的处理方法来处理
//删除操作代码解析在作者博客里 
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;
}

Here Insert Picture Description

Guess you like

Origin blog.csdn.net/qq_44256227/article/details/90412321