Cod sursa(job #2649975)

Utilizator akumariaPatrascanu Andra-Maria akumaria Data 16 septembrie 2020 22:46:54
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <cstring>

using namespace std;

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

int n;
int numbers[500001];
int aux[500001];


void mergesort(int start, int stop) {
	if (start >= stop)
		return;

	int middle = (start + stop) / 2;

	mergesort(start, middle);
	mergesort(middle + 1, stop);

	int i = start, j = middle + 1;
	for(int k=start; k<=stop; ++k) {
		if (i <= middle && (j>stop || numbers[i] < numbers[j]))
			aux[k] = numbers[i++];
		else
			aux[k] = numbers[j++];

	}

	memcpy(numbers + start, aux + start, (stop - start + 1) * sizeof(numbers[0]));
}


int main() {
	fin >> n;
	for (int i=0; i<n; ++i)
		fin >> numbers[i];

	mergesort(0, n-1);

	for(int i=0; i<n; ++i)
		fout << numbers[i] << ' ';

	return 0;
}