Cod sursa(job #751682)

Utilizator roots4Irimia Alexandru Gabriel roots4 Data 26 mai 2012 17:11:20
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define dim 500010

FILE*f=fopen("algsort.in","r");
FILE*g=fopen("algsort.out","w");

int V[dim],n,aux;

int poz(int st,int dr){
	int i=st,j=dr;
	int ii=0,jj=-1;
	int x=rand()%(dr-st)+st;
	aux=V[x];
	V[x]=V[st];
	V[st]=aux;
	while(i!=j){
		if(V[i]>V[j]){
			aux=V[i];
			V[i]=V[j];
			V[j]=aux;
			aux=ii;
			ii=-jj;
			jj=-aux;
		}
		i+=ii;j+=jj;
	}
	return i;
}

void quick(int st,int dr){
	int p;
	if(st<dr){
		p=poz(st,dr);
		quick(st,p-1);
		quick(p+1,dr);
	}
}

int main(){
	srand(time(0));
	int i;
	fscanf(f,"%d",&n);
	for(i=1;i<=n;i++)
		fscanf(f,"%d",&V[i]);
	quick(1,n);
	for(i=1;i<=n;i++)
		fprintf(g,"%d ",V[i]);
	return 0;
}