#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int n, k;//定义n和k
int q[N];
void quick_sort(int q[], int l, int r)
{
if(l >= r) return;//边界问题,如果只有一个数或者没有数字就不用排序了
int i = l - 1, j = r + 1, x = q[l + r >> 1];//两个指针:先把指针放到边界两侧外的一格。因为要先把指针往中间移动一格,然后再去判断。
while(i < j)
{
do i ++; while(q[i] < x);
do j --; while(q[j] > x);
if(i < j) swap(q[i], q[j]);//如果两个指针还没有相遇,就交换一下
}
//递归
quick_sort(q, l, j);
quick_sort(q, j + 1, r);
}
int main()
{
scanf("%d", &n);//当输入的数据较多时,选择较快的输入方式,C++中建议用scanf来输入
scanf("%d", &k);
for(int i = 0; i < n; i++ ) scanf("%d", &q[i]);
quick_sort(q, 0, n - 1);
printf("%d ", q[k-1]);
return 0;
}
排序-快速排序--第k个数
最新推荐文章于 2022-08-31 20:30:26 发布