Cod sursa(job #478641)

Utilizator DuxarFII-Stefan-Negrus Duxar Data 19 august 2010 16:10:30
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<cstdio>
#include<algorithm>

using namespace std;

int n,i,a[500001];

void quicksort(int A[],int f,int l);
int partition(int A[],int f,int l);

int main()
{
	freopen ("algsort.in","r",stdin);
	freopen ("algsort.out","w",stdout);
	
	scanf ("%d",&n);
	for (i=1;i<=n;scanf("%d",&a[i]),++i);
	
	quicksort(a,1,n);
	
	for (i=1;i<=n;printf("%d ",a[i]),++i);
	
	return 0;
}

void quicksort(int A[],int f,int l)
{
	int q;
	if (f<l)
	{
		q=partition(A,f,l);
		quicksort(A,f,q-1);
		quicksort(A,q+1,l);
	}
}

int partition(int A[],int f,int l)
{
	int i,j,x;
	i=f-1;
	x=A[l];
	for (j=f;j<l;++j)
		if (A[j]<=x)
		{
			++i;
			swap (A[i],A[j]);
		}
	swap(A[i+1],A[l]);
	return i+1;
}