Cod sursa(job #240508)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 7 ianuarie 2009 19:33:58
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
# include <stdio.h> 
# define  nmax 500001
int i,N, a[nmax];
void quik(int st, int dr)
{
  int i,j,p,aux;
  i=st;j=dr;
  p=a[st];
  while (i<=j){
    while (a[i]<=p && i<dr) i++;
    while (p<a[j] && j>st) j--;
    if (i<j) {
	aux=a[i];a[i]=a[j]; a[j]=aux;
	}
  }
  a[st]=a[j];
  a[j]=p;
  if (st<j-1) quik(st,j-1);
  if (j+1<dr) quik(j+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]);
    quik(1,N);
    for (i=1;i<=N;i++)
      printf("%d ",a[i]);
    return 0;   
}