社区讨论

求助,为什么第5个点AC,前四个都是WA

P1177【模板】排序参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lo3fn2b4
此快照首次捕获于
2023/10/24 05:51
2 年前
此快照最后确认于
2023/10/24 05:51
2 年前
查看原帖
#define MAX 100002
void swap(int*a,int *b)
{
    int t=*a;
    *a=*b;
    *b=t;
}
int partsort(int *a,int left,int right)
{
    int key=(left+right)/2;
    while(left<right)
    {
        while(key<right&&a[key]<=a[right])
        {
            right--;
        }
        while(left<key&&a[key]>=a[left])
        {
            left++;
        }
        if(left<right)swap(&a[left],&a[right]);
    }
    swap(&a[left],&a[key]);
    return left;
}
void quicksort(int *a,int left,int right)
{
    if(left>=right)return;
    int key=partsort(a,left,right);
    quicksort(a,left,key-1);
    quicksort(a,key+1,right);
    return ;
}
int main()
{
    int n;
    int a[MAX];
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    int left=0,right=n-1;
    quicksort(a,left,right);
    for(int i=0;i<n;i++)
    {
        printf("%d ",a[i]);
    }
    return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...