Cod sursa(job #330844)

Utilizator crisojogcristian ojog crisojog Data 11 iulie 2009 18:40:59
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<stdio.h>
long v[500010],n;
long part(long st, long dr)
{
 long i,j,pivot,aux,m;
 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[j]>pivot);
  if(i<j)
  {
   aux=v[i];
   v[i]=v[j];
   v[j]=aux;
  }
  else return j;
 }
}
void quicks(long st, long dr)
{
 long p;
 if(st<dr)
 {
  p=part(st,dr);
  quicks(st,p);
  quicks(p+1,dr);
 }
}
int main()
{
	long i;
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	scanf("%ld",&n);
	for(i=1;i<=n;++i)
		scanf("%ld",&v[i]);
	quicks(1,n);
	for(i=1;i<=n;++i) printf("%ld ",v[i]);
	printf("\n");
	return 0;
}