Cod sursa(job #2649969)

Utilizator akumariaPatrascanu Andra-Maria akumaria Data 16 septembrie 2020 22:33:28
Problema Sortare prin comparare Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>

using namespace std;
#include <fstream>

using namespace std;

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

int numbers[500001];

void quicksort(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 < stop && numbers[l] < numbers[start])
			++l;
		while(r > start && numbers[r] >= numbers[start])
			--r;
        if (l < r) {
            aux = numbers[r];
            numbers[r] = numbers[l];
            numbers[l] = aux;
        }
	}

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

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


int main() {
	int n;

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

	quicksort(0, n-1);

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

	return 0;
}