Cod sursa(job #1282603)

Utilizator mircea.dobreanuMircea Dobreanu mircea.dobreanu Data 4 decembrie 2014 15:44:57
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
using namespace std;

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

void quick_sort(int v[], int left, int right)
{
	int min = left, max = right, mid = v[(left + right) / 2];
	while (min <= max)
	{
		while (v[min] < mid)	++min;
		while (v[max] > mid)	--max;
		if (min <= max)
			swap(v[min++], v[max--]);
	}
	
	if (left < max)		quick_sort(v, left, max);
	if (min < right)	quick_sort(v, min, right);
}

int main()
{
	int n, v[500001];
	ifstream fin("algsort.in");
	ofstream fout("algsort.out");
	fin >> n;
	for (int i = 0; i < n; ++i)
		fin >> v[i];

	quick_sort(v, 0, n - 1);
	
	for (int i = 0; i < n; ++i)
		fout << v[i] << ' ';
	fout << '\n';
	return 0;
}