用快速排序就可以
```c
#include<bits/stdc++.h>
using namespace std ;
int a[5000005] ;
int main ()
{
int n , k ;
scanf("%d%d" , &n , &k) ;
for (int i = 1 ; i <= n ; i ++)
{
scanf("%d" , &a[i]) ;
}
sort (a + 1 , a + n + 1) ;
printf("%d" , a[k + 1]) ;
return 0 ;
}
```
@[禹天钧2016](/user/1178004)
by MichaelMao @ 2024-09-20 21:02:59
@[禹天钧2016](/user/1178004) 建议先学习一下如何分析时间复杂度
by Diaоsi @ 2024-09-20 21:03:22
@[禹天钧2016](/user/1178004) 问题如下:
1.数组开的过长,有报错的风险。
2.感觉排序有点问题,个人感觉应为:```c
for (int i = 1 ; i <= n ; i ++)
{
for (int j = i + 1 ; j <= n ; j ++)
{
if (a[j] > a[i]) swap(a[j] , a[i]) ;
}
}
```
by MichaelMao @ 2024-09-20 21:15:26