CKAO @ 2021-11-28 08:53:44
#include<stdio.h>
int a[5000000];
void quick_sort(int a[],int l,int r)
{
int x,i,j,t;
x=a[(l+r)/2];i=l-1;j=r+1;
if (l>=r)
return;
while (i<j)
{
do
{
i++;
}while (a[i]<x);
do
{
j--;
}while (a[j]>x);
if (i<j)
{
t=a[i];a[i]=a[j];a[j]=t;
}
}
quick_sort(a,l,j);
quick_sort(a,j+1,r);
}
int main()
{
int i,n,k,t;
scanf("%d%d",&n,&k);
for (i=0;i<n;i++)
scanf("%d",&a[i]);
quick_sort(a,0,n-1);
printf("%d",a[k]);
return 0;
}
by FFF团团员 @ 2021-11-29 20:31:56
@CKAO 如果第k大的数在左半部分区域就不用对右半部分再排序了