Cod sursa(job #1742508)

Utilizator delia_ioanaCeapa Delia Ioana delia_ioana Data 16 august 2016 15:50:43
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <stdio.h>
 
#define NX 500010
 
int N, A[NX], B[NX];
 
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);

	i = l;
	j = m + 1;
	k = l;
	while (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() {
	freopen("algsort.in", "r", stdin);
	freopen("algsort.out", "w", stdout);
 
	scanf("%d", &N);
	for(int i = 0; i < N; i ++)
	        scanf("%d", A + i);
 
	merge_sort(0, N - 1);
 
	for(int i = 0; i < N; i ++)
	        printf("%d ", A[i]);
 
	return 0;
}