Cod sursa(job #409157)

Utilizator petrecgClinciu Glisca Petre petrecg Data 3 martie 2010 14:44:48
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <stdio.h>
long a[1000000],b[1000000],i,n;
void merge_sort(long st,long dr)
{long mij=st+((dr-st)>>1),i,j,k;
 if(st!=dr)
  {merge_sort(st,mij);
   merge_sort(mij+1,dr);
   for(i=st,j=mij+1,k=st;i<=mij||j<=dr;)
    if(j>dr||(i<=mij&&a[i]<a[j]))
     b[k++]=a[i++];
    else
     b[k++]=a[j++];
   for(k=st;k<=dr;k++)a[k]=b[k];
  }
}

int main()
{freopen("algsort.in","r",stdin);
 freopen("algsort.out","w",stdout);
 scanf("%ld",&n);
 for(i=1;i<=n;i++)scanf("%ld",&a[i]);
 fclose(stdin);
 merge_sort(1,n);
 for(i=1;i<=n;i++)printf("%ld ",a[i]);
 fclose(stdout);
 return 0;
}