Cod sursa(job #304008)

Utilizator cotofanaCotofana Cristian cotofana Data 10 aprilie 2009 18:17:44
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <stdio.h>
#define dim 500100

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

void merge_sort(int l, int r)
{
    int m = (l + r) / 2, 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()
{
	int i;
	freopen("algsort.in", "r", stdin);
	freopen("algsort.out", "w", stdout);
	scanf("%d\n", &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;
}