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

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 HearTheWindSing @ 2020-04-01 18:11:51

@Alonely 你指针申请的空间不释放而且不初始化是干啥


by zhjxaoini @ 2020-04-01 18:14:25

@wangyxhaha 程序结束会由操作系统释放啊,而且后面不就输入数据了不需要初始化啊


by andyli @ 2020-04-01 18:15:29

@Alonely 要先判 l==r


by 打表大蒟蒻 @ 2020-04-01 18:16:12

@Alonely 直接sort不香吗


by 打表大蒟蒻 @ 2020-04-01 18:16:37

再说你快排写的也不对呀


by HearTheWindSing @ 2020-04-01 18:20:43

@zhaojinxi ee,你说的自动释放是Java吧

虽说现在操作系统都很聪明,会帮忙释放,但是delete还是个很好的习惯


by Alonely @ 2020-04-01 18:22:40

@打表大蒟蒻 不想STL,快排哪里不对


by Alonely @ 2020-04-01 18:24:19

@wangyxhaha 释放也没用


by andyli @ 2020-04-01 18:34:48

@Alonely

...
int quickSort(int *arr,int l,int r,int k)
{
if (l==r) return arr[l];
...

by zhjxaoini @ 2020-04-01 18:51:23

@wangyxhaha 不是啊,Java 是由 JVM 虚拟机在运行时释放的,C++ 虽然没有内存回收机制,但是任何一个程序结束后操作系统都会做清理工作啊


| 下一页