Cod sursa(job #265630)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 24 februarie 2009 10:16:36
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h>
long n,i;
long v[500010];


long part(long v[], long st, long dr)
{
long i,j,m,pivot,aux;
 m=(st+dr)>>1;
 pivot=v[m];
 i=st-1;
 j=dr+1;
 while(1)
	 {
	 do{++i;}while(v[i]<pivot);
	 do{--j;}while(v[i]>pivot);
	 if(i<j)
		 {
		 aux=v[i];
		 v[i]=v[j];
		 v[j]=aux;
		 }
	 else
		 return j;
	 }
 }


void quick(long v[], long st, long dr)
{
long p;
if(st<dr)
	{
	p=part(v,st,dr);
	quick(v,st,p);
	quick(v,p+1,dr);
	}
}


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