程序填空题:建立最大堆
下列代码的功能是将存有`N`个元素的数组`A[]`调整为最大堆。
```c++
#define leftchild(i) ( 2*(i)+1 )
void BuildMaxHeap( ElementType A[], int N )
{ int i, j, child;
ElementType Tmp;
for ( i = (N-1)/2; i >= 0; i-- ) {
j = i;
for ( Tmp = A[j]; leftchild(j) < N; j = child ) {
child = leftchild(j);
if (@@[child!=N-1 && A[child+1]>A[child]](4))
child ++;
if (@@[Tmp < A[child]](4)) A[j] = A[child];
else break;
}
@@[A[j] = Tmp](4);
}
}
```
**感谢燕山大学窦燕老师修正题目!**
答案:
第1空:child!=N-1 && A[child+1]>A[child]
第2空:Tmp < A[child]
第3空:A[j] = Tmp
```c++
#define leftchild(i) ( 2*(i)+1 )
void BuildMaxHeap( ElementType A[], int N )
{ int i, j, child;
ElementType Tmp;
for ( i = (N-1)/2; i >= 0; i-- ) {
j = i;
for ( Tmp = A[j]; leftchild(j) < N; j = child ) {
child = leftchild(j);
if (@@[child!=N-1 && A[child+1]>A[child]](4))
child ++;
if (@@[Tmp < A[child]](4)) A[j] = A[child];
else break;
}
@@[A[j] = Tmp](4);
}
}
```
**感谢燕山大学窦燕老师修正题目!**
答案:
第1空:child!=N-1 && A[child+1]>A[child]
第2空:Tmp < A[child]
第3空:A[j] = Tmp