Cod sursa(job #828746)

Utilizator vlad.doruIon Vlad-Doru vlad.doru Data 4 decembrie 2012 12:51:42
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#include <cstdlib>
#include <ctime>

using namespace std;

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

const int N=550000;

int n,v[N];

void quickSort(int *v,int left,int right){
	if(left>=right)
		return;
	int randpoz=left+rand()%(right-left+1);
	swap(v[randpoz],v[left]);
	int i,j,pivot;
	for(pivot=v[left],i=left+1,j=right;i<j;){
		if(v[i]>=pivot){
			swap(v[i],v[j]);
			--j;
		}
		else{
			++i;
		}
	}
	if(v[i]>pivot){
		--i;
	}
	swap(v[left],v[i]);
	quickSort(v,left,i-1);
	quickSort(v,i+1,right);
}

int main(){
	int i;
	in>>n;
	for(i=1;i<=n;++i){
		in>>v[i];
	}
	srand(time(NULL));
	quickSort(v,1,n);
	for(i=1;i<=n;++i){
		out<<v[i]<<" ";
	}
}