Пример #1
0
	 /*父子(至多)三者中的大者*/
	Rank ProperParent(Rank n, Rank i)
	{
		if (rChildValid(n, i))
		{
			return bigger(bigger(i, lChild(i)), rChild(i));
		}
		else if (lChildValid(n, i))
		{
			return bigger(i, lChild(i));
		}
		else
		{
			return i;
		}
	}
Пример #2
0
void max_heapify(int array[], int length, int root)
{
	int max, l, r;
	
	while(root <= length)
	{
		l = lChild(root);
		r = rChild(root);

		if(l <= length && array[root-1] < array[l-1])
			max = l;
		else
			max = root;

		if(r <= length && array[max-1] < array[r-1])
			max = r;

		if(root != max)
		{
			exchange(&array[root-1], &array[max-1]);
			root = max;
		}
		else
			break;
	}
}
Пример #3
0
	bool lChildValid(Rank n, Rank i)
	{
		return inHeap(n, lChild(i));
	}