为什么sort跑30ms,我的快排跑2.42s啊qaq
查看原帖
为什么sort跑30ms,我的快排跑2.42s啊qaq
359824
sunken_feather楼主2020/9/27 14:27
#include <stdio.h>
#include <algorithm>
using namespace std;
int a[100010],n;
void q_sort(int l,int r)
{
	if(l<r){
	swap(a[l],a[l+(r-l)/3]);	
		int i=l,j=r,x=a[l];
		while(i<j){
			while(i<j&&a[j]>=x) j--;
			if(i<j) a[i++]=a[j];
			while(i<j&&a [i]<=x) i++;
			if(i<j) a[j--]=a[i];
		}
		a[i]=x;
		q_sort(l,i-1);
		q_sort(i+1,r);
	}
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	 scanf("%d",&a[i]);
	q_sort(1,n);
	for(int i=1;i<=n;i++)
	 printf("%d ",a[i]);
	return 0;
}
2020/9/27 14:27
加载中...