Cod sursa(job #315926)

Utilizator raica_cristiraica dumitru cristian raica_cristi Data 17 mai 2009 17:27:29
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<stdio.h>
#define dim 4000
int a[dim];
int n,m,i,k;

void afis(){ for(i=1;i<=n;i++)  printf("%d ",a[i]);}
void read(){ scanf("%d",&n);  for(i=1;i<=n;i++)  scanf("%d",&a[i]);}
void sw(int &i,int &k)
{
     int aux;
     aux=a[i];
     a[i]=a[k];
     a[k]=aux;
     i++;
     k--;
     
}
void qsort(int st,int dr)
{
     int i=st,j=dr,p=a[(st+dr)/2];
    do
    {
               while(a[i]<p)
               i++;
               while(a[j]>p)
               j--;
               if(i<=j)
               sw(i,j);
                       }
               while(i<=j);
               if(st<j)
                       qsort(st,j);
               if(i<dr)
                       qsort(i,dr);
}
int main ()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    read();
    qsort(1,n);
    afis();
return 0;
}