Cod sursa(job #240764)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 8 ianuarie 2009 17:19:40
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
# include <stdio.h> 
# define  nmax 500001
int i,N;
long a[nmax];

void quick(int st, int dr)
{ int i = st-1, j = dr;
  long v = a[dr],aux;

  if (dr <= st) return;
  for (;;)
     {
	while (a[++i] < v) ;
	while (v < a[--j]) if (j == st) break;
	if (i >= j) break;
	aux=a[i];a[i]=a[j]; a[j]=aux;
	}
  aux=a[i];a[i]=a[dr]; a[dr]=aux;
  quick(st, i-1);
  quick(i+1, dr);
}
int main()
{

    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&N);
    for (i=1;i<=N;i++)
	scanf("%d ",&a[i]);
    quick(1,N);
    for (i=1;i<=N;i++)
      printf("%ld ",a[i]);
    return 0;   
}