求助,用vs一直说栈溢出但是看不出来哪里出了问题...
查看原帖
求助,用vs一直说栈溢出但是看不出来哪里出了问题...
606023
sduoooh楼主2022/2/17 19:12

最开始敲的是以最右边为基准数的快排,是不会过的;后来发现O2可以过了之后,看了看其他小伙伴的方法,试着把数组放在外边,并让中间的那个数作为基准数,但是现在开始4个MLE,1个RE了...我就去VS里试了试,发现它提示我栈溢出...可我真的看不出来哪里出了问题呀,求助--

代码如下:

#include <stdio.h>
int a[100005];
void qs (int left,int right)
{
    if (left >= right) return ;
    int l=left,r=right,ou=a[(left+right)/2],temp;
    do
    {
        while (ou<=a[r]) r--;
        while (a[l]<=ou) l++;
        if (l<=r) 
        {
            temp=a[l];
            a[l]=a[r];
            a[r]=temp;
            l++;
            r--;
        }
    }while (l<=r);
    qs (left,l);
    qs (l,right);
}

int main()
{
    int n;
    scanf("%d",&n);
    for (int i=0;i<n;i++) scanf ("%d",&a[i]);
    qs (0,n-1);
    for (int i=0;i<n;i++) printf("%d ",a[i]);
    return 0;
}
2022/2/17 19:12
加载中...