Cod sursa(job #1470653)

Utilizator AlexandraaaaMereu Alexandra Alexandraaaa Data 11 august 2015 19:49:56
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <fstream>
#define Nmax 500000

using namespace std;

int v[Nmax], n;

void Interclas(int ls, int ld, int m) {
	int i, j, k, a[Nmax];
	i = ls;
	j = m+1;
	k = 0;
	while (i <= m && j <= ld){
		if (v[i] < v[j]) {
			a[k] = v[i];
			i++;
		} else {
			a[k] = v[j];
			j++;
		}
		k++;
	}

	while (i <= m){
		a[k] = v[i];
		i++;
		k++;
	}
	while (j <= ld){
		a[k] = v[j];
		j++;
		k++;
	}

	k = 0;
	for (i = ls; i <= ld; ++i){
		v[i] = a[k];
		k++;
	}
}

void MergeS(int ls, int ld) {
	if (ld - ls <= 1){
		if (v[ld] < v[ls])
			swap(v[ld], v[ls]);
	}
	else {
		int m = (ls + ld) / 2;
		MergeS(ls, m);
		MergeS(m + 1, ld);
		Interclas(ls, ld, m);
	}
}

int main() {
	ifstream f("algsort.in");
	ofstream g("algsort.out");
	int i;
	f >> n;
	for (i = 0; i < n; ++i)
		f >> v[i];
	MergeS(0, n - 1);
	for (i = 0; i < n; ++i)
		g << v[i]<<" ";
	f.close();
	g.close();
	return 0;
}