有没有同学指导一下该怎么优化一下,只有20分一直超时
查看原帖
有没有同学指导一下该怎么优化一下,只有20分一直超时
303464
zhs3202669494楼主2021/10/12 21:29
#include <iostream>

using namespace std;

void quicksort(int *,int,int);

int main()
{
    int n,i;
    cin>>n;
    int a[n];
    for(i=0;i<n;i++)
    {
        cin>>a[i];
    }

    quicksort(a,0,n-1);

     for(i=0;i<n-1;i++)
    {
        cout<<a[i]<<" ";
    }
    cout<<a[i]<<endl;

    return 0;
}

void quicksort(int* a,int left,int right)
{
    int l=left,r=right;
    if(left==right)
    {
        return;
    }

    int first=a[l];//选中序列中第一个值

    while(l<r)
    {
        while(l<r&&(a[r]>=first))//右边的标识向左走
        {
            r--;
        }
        if(l<r&&(a[r]<first))
        {
            a[l]=a[r];
        }
        while(l<r&&(a[l]<=first))//左边的标识向右走
        {
            l++;
        }
        if(l<r&&(a[l]>first))
        {
            a[r]=a[l];
        }

        a[l]=first;//确定了所选数的位置

        quicksort(a,left,l-1);
        quicksort(a,l+1,right);
    }
}


2021/10/12 21:29
加载中...