void main()
{
//已知extern real array[n]和extern int k
real knumber=foundk(array[],0,n-1);
//array[]数组下标从0开始,总共n个
print(knumber);
}//main()
real foundk(int a[],int head,int length1)
{
int tail=head+length1-1;
real pivot=a[head];
int i=head;
int j=tail;
while(true){
do{
i++;
}while(a[i]<pivot);
do{
j++;
}while(a[j]>pivot);
if (i>=j) break;//仅仅退出while循环
swap(a[i],a[j])
}//while
a[head]=a[j];
//若标准快速排序需a[j]=pivot,这里只找第k大的;
if (k=j-head+1)
return pivot;
else if (k<j-head+1)
return foundk(a[],head,j-head);
else return foundk(a[],j+1,tail-j);
}//foundk()
|