Cod sursa(job #1508499)

Utilizator cosmin.pascaruPascaru Cosmin cosmin.pascaru Data 22 octombrie 2015 17:22:16
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#include <cstdlib>
#include <ctime>

#define NMAX 500005

using namespace std;

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

int v[NMAX];

void quicksort(int st, int dr)
{
	int pivot = v[st + rand() % (dr - st + 1)];
	int i = st;
	int j = dr;
	
	do
	{
		while (v[i] < pivot && i < dr) ++i;
		while (v[j] > pivot && j > st) --j;

		if (i <= j)
		{
			swap(v[i], v[j]);
			++i; --j;
		}
	} while (i <= j);

	if (j > st) quicksort(st, j);
	if (i < dr) quicksort(i, dr);
}

int main()
{
	srand(time(NULL));

	int n;

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

	quicksort(0, n - 1);

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