Cod sursa(job #265200)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 23 februarie 2009 16:24:37
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<stdio.h>
long a[500050],n,i;
long partit(long a[],long st,long dr)
{long i,j,m,piv,aa;
 m=(st+dr)/2;
 piv=a[m];
 i=st-1;
 j=dr+1;
 while(1)
  {do{++i;} while(a[i]<piv);
   do{--j;} while(a[j]>piv);
   if (i<j)
	 {aa=a[i];a[i]=a[j];a[j]=aa;}
	   else
	 return j;
  }
}
void quicks(long a[],long st,long dr)
{long p;
 if(st<dr)
   {p=partit(a,st,dr);
    quicks(a,st,p);
    quicks(a,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",&a[i]);
 quicks(a,1,n);
 for(i=1;i<=n;++i)
    printf("%ld ",a[i]);
 printf("\n");
}