程序填空题:用堆查找第K大元
本函数的功能是从有`N`个元素的线性表`A`中查找第`K`大的元素。其中函数`BuildMinHeap(H, K)`是将元素`H[1]` ... `H[K]`调整为一个最小堆。请完成下列填空。
```c++
ElementType FindKthLargest ( int A[], int N, int K )
{ /* it is assumed that K<=N */
ElementType *H;
int i, next, child;
H = (ElementType *)malloc((K+1)*sizeof(ElementType));
for ( i=1; i<=K; i++ ) H[i] = A[i-1];
BuildMinHeap(H, K);
for ( next=K; next H[0] = A[next];
if ( H[0] > H[1] ) {
for ( i=1; i*2<=K; i=child ) {
child = i*2;
if ( child!=K && @@[H[child+1] if ( @@[H[0]>H[child]](3) )
H[i] = H[child];
else break;
}
H[i] = H[0];
}
}
return H[1];
}
```
答案:
第1空:H[child+1]
第2空:H[0]>H[child]
```c++
ElementType FindKthLargest ( int A[], int N, int K )
{ /* it is assumed that K<=N */
ElementType *H;
int i, next, child;
H = (ElementType *)malloc((K+1)*sizeof(ElementType));
for ( i=1; i<=K; i++ ) H[i] = A[i-1];
BuildMinHeap(H, K);
for ( next=K; next
if ( H[0] > H[1] ) {
for ( i=1; i*2<=K; i=child ) {
child = i*2;
if ( child!=K && @@[H[child+1]
H[i] = H[child];
else break;
}
H[i] = H[0];
}
}
return H[1];
}
```
答案:
第1空:H[child+1]
第2空:H[0]>H[child]