-->
当前位置:首页 > 题库 > 正文内容

程序填空题:用堆查找第K小元

Luz4年前 (2021-05-10)题库850
本函数的功能是从有`N`个元素的线性表`A`中查找第`K`小的元素。其中函数`BuildMaxHeap(H, K)`是将元素`H[1]` ... `H[K]`调整为一个最大堆。请完成下列填空。

```c++
ElementType FindKthSmallest ( 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];
BuildMaxHeap(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]>H[child]](3) ) child++;
if ( @@[H[0] H[i] = H[child];
else break;
}
H[i] = H[0];
}
}
return H[1];
}

```





答案:
第1空:H[child+1]>H[child]

第2空:H[0]

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。