Cod sursa(job #2649968)

Utilizator akumariaPatrascanu Andra-Maria akumaria Data 16 septembrie 2020 22:23:02
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>

using namespace std;

int numbers[500001];

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

	int aux;

    if (start == stop - 1) {
        if (numbers[start] > numbers[stop]) {
            aux = numbers[start];
            numbers[start] = numbers[stop];
            numbers[stop] = aux;
        }
        return;
    }
	int l = start+1, r=stop;

	while(l < r) {
		while(l < r && numbers[l] < numbers[start])
			++l;
		while(l < r && numbers[r] >= numbers[start])
			--r;
		aux = numbers[r];
		numbers[r] = numbers[l];
		numbers[l] = aux;

	}

	aux = numbers[start];
	numbers[start] = numbers[r];
	numbers[r] = aux;

	mergesort(start, l-1);
	mergesort(r+1, stop);
}


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

	int n;

	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;
}