【求教】最后两个为什么超时啊

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

_Rikka_ @ 2024-03-13 15:06:50

#include<iostream>
#include <vector>
using namespace std;
int a[5000000]={0};

int Partition(int*R,int s,int t)
{
    int i=s,j=t;
    int base=R[s];
    while(i<j)
    {
        while(i<j&&R[j]>base)
        {
            j--;
        }
        if(i<j)
        {
            R[i]=R[j];
            i++;
        }
        while(i<j&&R[i]<=base)
        {
            i++;
        }
        if(i<j)
        {
            R[j]=R[i];
            j--;
        }
    }
    R[i]=base;
    return i;   
}
int _Quicksort(int*R,int s,int t,int k)
{
    if(s<t)
    {
        int i=Partition(R,s,t);
        if(i==k)
        {
            return R[i];
        }
        if(i<k)
        {
            return _Quicksort(R,i+1,t,k);    //对右半部分进行排序
        }
       else if(i>k)
       {
            return _Quicksort(R,s,i-1,k);    //对左半部分进行排序
       } 
    }
    else 
    {
        return R[s];
    }
}
int main()
{   int n,k;
    cin>>n>>k;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    int result=_Quicksort(a,0,n-1,k);
    cout<<result;
}

by Ycc211 @ 2024-03-19 22:27:11

@Rikka 输入a[i]换成scanf试一下,cin输入要慢一点


by _Rikka_ @ 2024-03-24 16:13:39

@Ycc211 感谢,虽然不知道为什么但是改了之后确实AC了,谢谢大佬


|