Cod sursa(job #1292112)

Utilizator stefanzzzStefan Popa stefanzzz Data 13 decembrie 2014 17:34:58
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#define MAXN 500005
using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int aux[MAXN], i1, i2, i, mid;

void merge_sort(int v[], int left, int right){
	if(left == right)
		return;
	merge_sort(v, left, (left + right) >> 1);
	merge_sort(v, ((left + right) >> 1) + 1, right);
	
	mid = (left + right) >> 1;
	i1 = left; i2 = mid + 1;

	for(i = left; i <= right; i++){
		if(i2 > right || v[i1] < v[i2])
			aux[i] = v[i1++];
		else
			aux[i] = v[i2++];
	}

	for(i = left; i <= right; i++)
		v[i] = aux[i];
}


int main(){
	int n, v[MAXN], i;
	
	f >> n;
	for(i = 1; i <= n; i++)
		f >> v[i];
	merge_sort(v, 1, n);

	for(i = 1; i <= n; i++)
		g << v[i] << ' ';
	f.close();
	g.close();
	return 0;
}