Cod sursa(job #1799896)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 6 noiembrie 2016 22:46:15
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <vector>

using namespace std;

void mergesort(vector<int>& values, const int from, const int to) {
	if (from == to - 1) {
		return;
	}
	const int mid = from + (to - from) / 2;
	mergesort(values, from, mid);
	mergesort(values, mid, to);
	auto aux = vector<int>(to - from);
	int i = from, j = mid, k = 0;
	while (i < mid && j < to) {
		aux[k++] = values[i] < values[j] ? values[i++] : values[j++];
	}
	for (; i < mid; aux[k++] = values[i++]) {}
	for (; j < to; aux[k++] = values[j++]) {}
	for (int p = 0; p < k; ++p) {
		values[from + p] = aux[p];
	}
}

int main() {
	ifstream in("algsort.in");
	ofstream out("algsort.out");
	int n;
	in >> n;
	auto values = vector<int>(n);
	for (int i = 0; i < n; ++i) {
		in >> values[i];
	}
	mergesort(values);
	for (int i = 0; i < n; ++i) {
		out << values[i] << (i < n - 1 ? " " : "\n");
	}
	in.close();
	out.close();
}