最后一个TLE,求解
查看原帖
最后一个TLE,求解
137699
长安何处在楼主2021/9/6 21:42

加了随机化但是最后一个TLE

#include<bits/stdc++.h>
using namespace std;
int arr[100002];
void swap(int &m,int &n)
{
	int c;
	c=m;
	m=n;
	n=c;
	return;
}
void qsort(int l,int r,int *a)
{
	if(l>=r)return;
	int i=l,j=r,base;
	base=rand()%(r-l+1)+l;
	swap(a[base],a[l]);
	base=a[l];
	while(i<j)
	{
		while(i<j&&a[j]>=base)j--; 
		while(i<j&&a[i]<=base)i++;
		if(i<j)swap(a[i],a[j]);
	}
	swap(a[l],a[i]);
	i-=1,j+=1;
	qsort(l,i,a);
	qsort(j,r,a);
	return;
}
int main()
{
	//freopen("3.in","r",stdin);
	//freopen("3.out","w",stdout);
    int n;
	cin>>n;
	srand(time(NULL));
	for(int i=1;i<=n;i++)
		scanf("%d",&arr[i]);
	qsort(1,n,arr);
	for(int i=1;i<=n;i++)
		printf("%d ",arr[i]);
	cout<<endl;
	return 0;
 } 
2021/9/6 21:42
加载中...