Cod sursa(job #2632438)

Utilizator KPP17Popescu Paul KPP17 Data 3 iulie 2020 12:19:32
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#define fisier "algsort"
#ifndef fisier
	#define fisier "DEBUG"
#endif
#include <fstream>
std::ifstream in (fisier ".in");
std::ofstream out(fisier ".out");



void quicksort(int* inceput, int* sfarsit)
{
	if (sfarsit <= inceput)
		return;

	int
	*mijloc = inceput + (sfarsit - inceput >> 1),
	*i = inceput - 1;

	std::swap(*mijloc, *sfarsit); // iau pivotul din mijloc

	for (int* j = inceput; j <= sfarsit; j++)
		if (*j <= *sfarsit)
			std::swap(*++i, *j);

	quicksort(inceput, i - 1);
	quicksort(i + 1, sfarsit);
}



int v[500000], n;

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

	quicksort(v, v + n - 1);

	for (int i = 0; i < n; i++)
		out << v[i] << ' ';
}