快速排序

题目

luogu1177

代码

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdio>
#define N 100005
using namespace std;

int n,a[N]; 

void quicksort(int l,int r)
{
	int mid=a[rand()%(r-l)+l],i=l,j=r;
	while(i<=j)
	{
		while(a[i]<mid) i++;
		while(a[j]>mid) j--;
		if(i<=j)
		{
			swap(a[i],a[j]);
			i++;j--;
		}
	}
	if(l<j) quicksort(l,j);
    if(i<r) quicksort(i,r);
}

int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	quicksort(1,n);
	for(int i=1;i<=n;i++) printf("%d ",a[i]);
	return 0;
}
posted @ 2017-08-18 08:23  XYZinc  阅读(128)  评论(0编辑  收藏  举报