Cod sursa(job #1022937)

Utilizator FlowerDTSFlorescu Alexandru FlowerDTS Data 6 noiembrie 2013 11:02:04
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h>
#define dim 500001
int n, a[dim], b[dim];
 
void merge_sort(int l, int r)
{
    int m = (l + r) >> 1, i, j, k;
 
    if (l == r) return;
 
    merge_sort(l, m);
    merge_sort(m + 1, r);
 
    for ( i=l, j=m+1, k=l; i<=m || j<=r; )
    if (j > r || (i <= m && a[i] < a[j]))
        b[k++] = a[i++];
    else
        b[k++] = a[j++];
 
    for (k = l; k <= r; k++)
     a[k] = b[k];
}
 
int main(void)
{
 freopen("algsort.in","r",stdin);
 freopen("algsort.out","w",stdout);
 
 scanf( "%d", &n);
 
 for( int i = 1; i<=n; ++i)
  scanf( "%d", &a[i]);
 
 merge_sort( 1, n);
 
 for( int i = 1; i<=n; ++i)
  printf("%d ", a[i]);
 
  printf("\n");
  fcloseall();
  return 0;
}