20 求助

P1923 【深基9.例4】求第 k 小的数

Miracle1024 @ 2023-05-07 20:21:50

测评记录

#include<iostream>
using namespace std;
typedef long long ll;
int a[5000005],n,k;
void kp(int s,int e){
    int i=s,j=e,mid;
    if(s==e)return ;
    mid=a[(i+j)/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(s<j&&k<=j)kp(s,j);
    if(i<e&&i<=k)kp(i,e);
}
int main(){
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    kp(1,n);
    cout<<a[k+1];
    return 0;
}

by aikyon_lz2022 @ 2023-07-16 17:17:21

可以用sort排序


|