Cod sursa(job #1260220)

Utilizator dinuandAndrei-Mario Dinu dinuand Data 11 noiembrie 2014 00:15:50
Problema Sortare prin comparare Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>

void merge(int v[], int beg, int end, int aux[]) 
{
	if (end - beg < 2) return;
	int middle = (beg + end) / 2;
	merge(v, beg, middle, aux);
	merge(v, middle, end, aux);

	int left = beg, right = middle;
	int i;
	for (i = beg; i < end; i++) {
		if (left < middle && (right >= end || v[left] <= v[right])) {
			aux[i] = v[left];
			left++;
		} else {
			aux[i] = v[right];
			right++;
		}
	}
	for (i = beg; i < end; i++) 
		v[i] = aux[i];
}

int main()
{
	int n, v[500001], aux[500001], i;
	freopen("algsort.in", "r", stdin);
	freopen("algsort.out", "w", stdout);
	scanf("%d", &n);
	for (i = 0; i < n; i++) scanf("%d", &v[i]);
	merge(v, 0, n, aux);
	for (i = 0; i < n; i++) printf("%d ", v[i]);
	printf("\n");
	return 0;
}