Cod sursa(job #280150)

Utilizator shnakoVlad Schnakovszki shnako Data 13 martie 2009 11:13:19
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(register int i = 1; i<=n; ++i)
	scanf( "%d", &a[i]);

merge_sort( 1, n);

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

fcloseall();
return 0;
}