tbzedq3j @ 2021-07-08 21:48:47
#include <bits/stdc++.h>
using namespace std;
long long a[5000010];
long long i, j, n, k, mid;
void swap(long long& sa, long long& sb){
int sc = sa;
sa = sb;
sb = sc;
}
void qusort(long long l, long long r){
i = l;
j = r;
mid = a[(l + r) / 2];
while(i <= j){
while(a[i] < mid) i++;
while(a[j] > mid) j--;
if(i <= j){
swap(a[i], a[j]);
i++;
j--;
}
}
if(l < j) qusort(l, j);
if(i < r) qusort(i, r);
return;
}
int main(){
cin >> n >> k;
for(long long i=1;i<=n;i++)
cin >> a[i];
qusort(1, n);
cout << a[k - 1];
return 0;
}
by 被独宠的教徒 @ 2021-07-08 21:51:09
头像好评
by 雨伞CKY @ 2021-07-08 22:11:46
快排的时间复杂度是
by 雨伞CKY @ 2021-07-08 22:49:59
其实这题使用快速读入和sort
也可以过。
by tbzedq3j @ 2021-09-13 18:23:03
@雨伞CKY 谢谢dalao指教 QWQ