WA#3#4#5 求助!

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

BYER_FIGHTING @ 2024-08-23 14:36:38

可以问一下这段代码有什么问题吗?感谢

#include<bits/stdc++.h>
using namespace std;
long long k;
int findk(long long begin,long long end,long long*a){
    int i=begin,j=end;
    int temp=begin;
    while(i<j){
        while(i<j&&a[j]>a[temp]) j--;
        while(i<j&&a[i]<=a[temp])i++;
        if(i<j){
            swap(a[i],a[j]);
            i++;
            j--; 
        }
    }   
    swap(a[i],a[temp]);
    if(k==i)
        return a[i];
    else if(k<i)
        return findk(begin,i-1,a);
    else 
        return findk(i+1,end,a);
}
int main(){
    long long n;
    cin>>n>>k;
    long long *a=new long long[n];
    for(int i=0;i<n;i++)
        scanf("%lld",&a[i]);
    cout<<findk(0,n-1,a);
    return 0;
}

by BIOSS @ 2024-08-28 10:53:26

你为啥不用sort???


|