Cod sursa(job #773008)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 31 iulie 2012 18:26:15
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#include <time.h>
#include <stdlib.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n, v[500002], i, j, aux, ii0, jj0;
int piv;
int poz(int i, int j){
	
	ii0=0;
	jj0=-1;
	
	piv = i + rand()%(j-i);
	
	aux = v[piv];
	v[piv] = v[i];
	v[i] = aux;
	
	while(i!=j)
	{
		if(v[i]>v[j])
		{
			aux=v[i];
			v[i]=v[j];
			v[j]=aux;
			aux=-ii0;
			ii0=-jj0;
			jj0=aux;
		}
		i+=ii0;
		j+=jj0;
	}
	return i;
}

void quicksort(int p, int u){
	int k;
	if(p<u)
	{
		k=poz(p, u);
		quicksort(p, k-1);
		quicksort(k+1, u);
	}
}

int main(){
	srand(time(0));
	f>>n;
	for(i=1; i<=n; i++)
		f>>v[i];
	quicksort(1, n);
	for(i=1; i<=n; i++)
		g<<v[i]<<' ';
	return 0;
}