Cod sursa(job #2636598)

Utilizator irimia_alexIrimia Alex irimia_alex Data 18 iulie 2020 19:12:27
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <stdlib.h>
#include <ctime>
#define NMAX 500005

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

int v[NMAX], n;

void swap(int& a, int& b) {
	int aux = a;
	a = b;
	b = aux;
}

int partition(int i, int j) {
	swap(v[rand() % (j - i) + i], v[j]);
	int k = i, l = i, p = v[j];
	for (;l < j;++l) {
		if (v[l] < p)
			swap(v[k++], v[l]);
	}
	swap(v[k], v[j]);

	return k;
}

void quickSort(int i, int j) {
	if (i >= j)
		return;
	int p = partition(i, j);
	quickSort(i, p - 1);
	quickSort(p + 1, j);
}

int main() {
	srand(time(NULL));
	std::ios::sync_with_stdio(false);

	fin >> n;
	for (int i = 1;i <= n;++i)
		fin >> v[i];

	quickSort(1, n);

	for (int i = 1;i <= n;++i)
		fout << v[i] << ' ';

	return 0;
}