这个代码每次提交分数都不一样

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

Alonely @ 2020-04-01 18:10:39

#include<iostream>
using namespace std;
int quickSort(int *arr,int l,int r,int k)
{
    int j=l;
    int i=l+1;
    while(i<=r)
    {
        if(arr[i]<arr[l])
        {
            swap(arr[i],arr[j+1]);
            j++;
        }
        i++;
    }
    swap(arr[l],arr[j]);
    if(j==k)
    {
        return arr[j];
    }
    else if(j>k)
    {
        return quickSort(arr,l,j-1,k);
    }
    else
    {
        return quickSort(arr,j+1,r,k);
    }
}
int main()
{
    ios::sync_with_stdio(false);
    int n,k;
    int *arr=new int[n];
    cin>>n>>k;
    for(int i=0;i<n;i++)
    {
        cin>>arr[i];
    }
    int m=quickSort(arr,0,n-1,k);
    cout<<m<<endl;
    return 0;
}

交了很多次,最高80分,最低20分,结果不是AC就是RE,咋整啊大佬们


by zhjxaoini @ 2020-04-01 18:53:56

dalete 确实是好习惯,但是操作系统的释放相比 delete 仅仅只是少了调用析构函数这一步,对于内置数据类型没有影响


by Limit @ 2020-04-01 19:13:47

@Alonely

    int n,k;
    int *arr=new int[n];
    cin>>n>>k;

改成

    int n,k;
    cin>>n>>k;
    int *arr=new int[n];

试试吧


by 打表大蒟蒻 @ 2020-04-01 21:36:22

@Alonely 好吧,我看错了


by Alonely @ 2020-04-04 10:03:29

@Limit 感谢,没看到,还是用STL才水了这道题


上一页 |