Cod sursa(job #277548)

Utilizator sigridMaria Stanciu sigrid Data 11 martie 2009 19:44:26
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<stdio.h>
#define dim 500001

int n,a[dim],b[dim];

void merge_sort(int li, int ls)
{
 int i,j,k,jum;
 
 jum=(li+ls)/2;
 
 if(li==ls) return;
 
 merge_sort(li,jum);
 merge_sort(jum+1,ls);
 
 i=li;
 j=jum+1;
 k=li;
 
 while( (i<=jum) || (j<=ls) )
  {
   if( (j>ls) || ( (i<=jum) && (a[i]<a[j]) ) )
    {
     b[k]=a[i];
     
     i++;
     k++;
    }
    else
     {
      b[k]=a[j];
      
      j++;
      k++;
     }
  }
  
 for(i=li;i<=ls;i++)
  a[i]=b[i];
}

int main()
{
int i;

freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);

scanf("%d", &n);

for(i=1;i<=n;i++)
  scanf("%d", &a[i]);
  
merge_sort(1,n);

for(i=1;i<=n;i++)
 printf("%d ", a[i]);

return 0;
}