Cod sursa(job #265645)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 24 februarie 2009 10:30:38
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<stdio.h>
long v[500050],n,i;
long partitionare(long v[],long st,long dr)
{long i,j,m,pivot,aux;
m=(st+dr)/2;
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 quicks(long v[],long st,long dr)
{long p;
if(st<dr)
	{p=partitionare(v,st,dr);
	quicks(v,st,p);
	quicks(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]);
quicks(v,1,n);
for(i=1;i<=n;++i)
	printf("%ld ",v[i]);
printf("\n");
}