Cod sursa(job #265658)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 24 februarie 2009 10:46:17
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<stdio.h>
long n;
long v[5050];


long partit(long st, long dr)
{
long i,j,m,piv,a;
m=(st+dr)/2;
piv=v[m];
i=st-1;
j=dr+1;
while(1)
	{
	do{++i;}while(v[i]<piv);
	do{--j;}while(v[j]>piv);
	if(i<j)
		{
		a=v[i];
		v[i]=v[j];
		v[j]=a;
		}
	else
		return j;
	}
}

void quicks(long st, long dr)
{
long p;
if(st<dr)
	{
	p=partit(st,dr);
	quicks(st,p);
	quicks(p+1,dr);
	}
}


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