Cod sursa(job #721905)

Utilizator DaniLLeu Daniel DaniL Data 24 martie 2012 13:23:16
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<fstream>
#include<time.h>
#include<stdlib.h>
using namespace std;

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

int a[500001],n;

int poz(int ls , int ld)
{
	
	int pz = ls + rand()%(ld-ls+1);
	
	int aux = a[pz];
	a[pz]=a[ls];
	a[ls]=aux;
	
	int i=ls;
	int j=ld;
	int ii=0,jj=-1;
	while(i!=j)
	{
		if(a[i]>a[j]){
			int aux =a[i];
			a[i]=a[j];
			a[j]=aux;
			aux=ii;
			ii=-jj;
			jj=-aux;
		}
		i+=ii;
		j+=jj;
	}
	return i;
}

void sort(int ls,int ld, int a[]){
	if(ls<ld){
		int p=poz(ls,ld);
		sort(ls,p-1,a);
		sort(p+1,ld,a);
	}
}

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