时间复杂度O(n)
#include<iostream>
#include<cstdio>
using namespace std;
int a[100];
void swap(int i,int j)
{
int t=a[i];
a[i]=a[j];
a[j]=t;
}
int patrition(int x,int y)
{
int i=x,j=y;
int p=a[x];
while(i<j)
{
while(i<j&&a[j]>=p) j--;
while(i<j&&a[i]<=p) i++;
swap(i,j);
}
swap(i,x);
return i;
}
void solve(int x,int y,int k)
{
int p=patrition(x,y);
if(p+1==k){
cout<<p<<" "<<a[p]<<endl;
return ;
}
else if(p+1>k)
solve(x,p-1,k);
else
solve(p+1,y,k);
}
int main()
{
int n,k;
cin>>n>>k;
for(int i=0;i<n;i++)
cin>>a[i];
solve(0,n-1,k);
return 0;
}