Cod sursa(job #256956)

Utilizator Sorin_IonutBYSorynyos Sorin_Ionut Data 12 februarie 2009 15:36:35
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h>

#define max 500001
#define IN "algsort.in"
#define OUT "algsort.out"

FILE *fin=fopen(IN,"r");
FILE *fout=fopen(OUT,"w");

long n;
unsigned long x[max];

void quick(long,long);
long poz(long,long);

int main()
{
 int i;
    
 fscanf(fin,"%d",&n);   
 for(i=1;i<=n;i++)
  fscanf(fin,"%d",&x[i]);
 fclose(fin);
 
 quick(1,n);
 
 for(i=1;i<=n;i++)
  fprintf(fout,"%d ",x[i]);
 fclose(fout);
 
 return 0; 
}
  
void quick(long st,long dr)
{
 if(st<dr)
 {
  long k=poz(st,dr);
  quick(st,k-1);
  quick(k+1,dr);
 }
}

long poz(long st,long dr)
{
 long i=st;
 long j=dr;
 long ii=0;
 long jj=-1;
 long aux;
 
 while(i<j)
 {
  if(x[i]>x[j])
  {
   aux=x[i];
   x[i]=x[j];
   x[j]=aux;
   
   aux=ii;
   ii=-jj;
   jj=-aux;
  }
  i=i+ii;
  j=j+jj;
 }
return i;
}