Cod sursa(job #257490)

Utilizator Sorin_IonutBYSorynyos Sorin_Ionut Data 13 februarie 2009 14:02:28
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>

#define MAX 500500
#define IN "algsort.in"
#define OUT "algsort.out"

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

int a[MAX];
int n;

void sort(int,int);

int main()
{
 int i;
    
 fscanf(fin,"%d",&n);
    
 for(i=1;i<=n;++i)
  fscanf(fin,"%d", &a[i]);
    
 sort(1,n);
    
 for(i=1;i<=n;++i)
  fprintf(fout,"%d ",a[i]);    
  
 fprintf(fout,"\n");
 
 return 0;
}

void sort(int st,int dr)
{
 int i=st;
 int j=dr;
 int sch=a[(st+dr)/2];
 int tmp;
 
 do
 {
  while(a[i]<sch)
   ++i;
  while(a[j]>sch)
   --j;
   
  if(i<=j)
  {
   tmp=a[i];
   a[i]=a[j];
   a[j]=tmp;
   ++i;
   --j;    
  }
 }while(i<=j);  
 
 if(st<j)
  sort(st,j);
 if(i<dr)
  sort(i,dr);  
}