第k小数

来源:互联网 发布:c语言打开文件失败 编辑:程序博客网 时间:2024/05/23 13:16
#include<iostream>using namespace std;int a[1000];void quickselect(int l,int r,int k){  int i=l,j=r,mid=a[(l+r)/2];  do  {    while(a[i]<mid) i++;    while(a[j]>mid) j--;    if(i<=j)    {        swap(a[i],a[j]);        i++;        j--;    }  }while(i<=j);  if(l<=j&&k<=j-l+1) quickselect(l,j,k);  if(i<=r&&k>=i-l+1) quickselect(i,r,k+1-i);}int main(){    int n,i,k;    cin>>n>>k;    for(i=1;i<=n;i++) cin>>a[i];    quickselect(1,n,k);    cout<<a[k]<<endl;}

0 0