问题 问答题

阅读下列对正整数关键字序列L操作的算法,并回答问题:
(1)设L=(28,19,27,49,56,12,10,25,20,50),写出f33(L,4)的返回值;
(2)简述函数f33的功能。
int Partition(SeqList*L,int low,int high);
//对L[low…high]做划分,返回基准记录的位置,并使左部的关键字
//都小于或等于基准记录的关键字,右部的关键字都大于基准记录的关键字
int f33(SeqList L,int k){
int low,high,pivotpos;
low=1;
high=L.length;
if(k<low||k>high)
return-1;
do {
pivotpos=Partition(&L,low,high);//调用快速排序的划分算法
if(pivotpos<k)
low=pivotpos+1;
else if(pivotpos>k)
high=pivotpos-1;
}while(pivotpos!=k);
return L.data[pivotpos];
}

答案

参考答案:

解析:利用快速排序的“划分”机制进行查找,以求取序列中排行第k小的元素。

选择题
问答题 简答题