Cod sursa(job #909774)

Utilizator avramavram andrei marius avram Data 10 martie 2013 16:59:55
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#define DIM 50010
using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

int v[DIM], w[DIM], n, i;

void interclaseaza(int p, int m, int u) {
	int i = p;
	int j = m+1;
	int k = p-1;
	while (i<=m && j<=u)
		if (v[i] < v[j])
			w[++k] = v[i++];
		else
			w[++k] = v[j++];
	for (;i<=m;i++){
		w[++k] = v[i];
	}
	for (;j<=u;j++){
		w[++k] = v[j];
	}
	
	for (i=p;i<=u;i++)
		v[i] = w[i];
}

void sorteaza(int p, int u) {
	if (p<u) {
		int m = (p+u)/2;
		sorteaza(p,m);
		sorteaza(m+1,u);
		interclaseaza(p,m,u);
	}
}



int main() {
	fin>>n;
	for (i=1;i<=n;i++) {
		fin>>v[i];
	}
	
	sorteaza(1,n);
	
	for (i=1;i<=n;i++) {
		fout<<v[i]<<" ";
	}
	return 0;
}