// Begin from a[1]
void MaxHeapify(
int *a,
int index,
int len)
{
int l = index * 2;
int r = index * 2 + 1;
int largest = -1;
if (l <= len && a[l] > a[index])
{
largest = l;
}
else
{
largest = index;
}
if (r <= len && a[r] > a[largest])
{
largest = r;
}
if (largest != index)
{
int tmp = a[largest];
a[largest] = a[index];
a[index] = tmp;
MaxHeapify(a, largest, len);
}
}
void BuildMaxHeap(
int *a,
int len)
{
for (
int i = len / 2; i > 0; i--)
{
MaxHeapify(a, i, len);
}
}
// Begin from a[1]void MaxHeapify(int *a, int index, int len){int l = index * 2;int r = index * 2 + 1; int largest = -1;if (l <= len && a[l] > a[index]){large...