我裂开 错哪里了呀
查看原帖
我裂开 错哪里了呀
432183
JoeBiden2020楼主2021/2/13 16:00

第一个点AC 中间三个RE 最后一个WA 检查好多遍了 蒟蒻求大佬看看这个快排的问题在哪里

#include<bits/stdc++.h>
using namespace std;
int t[100005];
void qsort(int a[],int l,int r){
	if(r-l<=1)return;
	int flag=a[rand()%(r-l)+l];
	int x=l,y=r;
	for(int i=1;i<r;i++){
		if(a[i]<flag){
			t[x++]=a[i];
		}
		if(a[i]>flag){
			t[--y]=a[i];
		}
	}
	for(int i=l;i<x;i++)a[i]=t[i];
	for(int i=y;i<r;i++)a[i]=t[i];
	for(int i=x;i<y;i++)a[i]=flag;
	qsort(a,l,x);
	qsort(a,y,r);
}
int a[100005],n;
int main(){
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a[i];
	}
	qsort(a,0,n);
	for(int i=0;i<n;i++){
		cout<<a[i]<<" ";
	}
	puts("");
	return 0;
}
2021/2/13 16:00
加载中...