Cod sursa(job #971297)

Utilizator cosmo0093Raduta Cosmin cosmo0093 Data 8 iulie 2013 21:24:55
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <ctime>
#include <cstdlib>
void swap(int &a, int &b)
{
	int temp = a;
	a = b;
	b = temp;
}
void quiksort(int nArr[], int left, int right)
{
	int l = left, r = right;
	int pivot = nArr[l + rand() % (right - l)];
	while(l < r)
	{
		while(nArr[l] < pivot)
			l++;
		while(nArr[r] > pivot)
			r--;
		if(l <= r)
		{
			swap(nArr[l], nArr[r]);
			l++;
			r--;
		}
	}
	if(left < r) quiksort(nArr, left, r);
	if(right > l) quiksort(nArr, l, right);
}

int main(void)
{
	std::ofstream out("algsort.out");
	std::ifstream in("algsort.in");
	int nV, *nArr;
	srand(time(NULL));
	in >> nV;
	nArr = new int[nV];
	for(int i(0); i < nV; i++)
		in >> nArr[i];
	quiksort(nArr, 0, nV - 1);
	for(int i(0); i < nV; i++)
		out << nArr[i] << ' ';
	return 0;
}