Cod sursa(job #945259)

Utilizator robert_stefanRobert Stefan robert_stefan Data 1 mai 2013 15:36:30
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
/*
QuickSort
*/
#include<fstream>

using namespace std;

const int MAX=500000;

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

int v[MAX],n,i;

void qSort(int left, int right);

int main()
{
	fin>>n;
	for(i=0;i<n;i++)
		fin>>v[i];
	qSort(0,n-1);
	for(i=0;i<n;i++)
		fout<<v[i]<<' ';
	fout<<'\n';
	fin.close();
	fout.close();
	return 0;
}

void qSort(int left, int right)
{
	int pivot=v[(left+right)/2],tmp,min=left,max=right;
	do{
		while(v[min]<pivot&&min<=max)
			min++;
		while(v[max]>pivot&&min<=max)
			max--;
		if(min<=max)
			tmp=v[min], v[min]=v[max], v[max]=tmp, min++, max--;
	}while(min<=max);
	if(left<max)
		qSort(left,max);
	if(right>min)
		qSort(min,right);
}