Cod sursa(job #340920)

Utilizator MihaiGmihaig MihaiG Data 16 august 2009 23:29:22
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#define Max 500001

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

int n,sir[Max];

void citire (){
	fscanf(f,"%d",&n);
	for (int i=1; i<=n; i++)
		fscanf(f,"%d",&sir[i]);
	fclose(f);
}

void quicksort (int v[], int stanga, int dreapta){
	int i = stanga, j = dreapta, aux;
	int pivot = v[(stanga + dreapta) /2 ];
	while (i<=j){
		while (v[i] < pivot) 
			i++;
		while (v[j] > pivot)
			j--;
		if (i<=j){
			aux=v[i];                       
			v[i]=v[j];
			v[j]=aux;
			i++;
			j--;
		}
	}
	if (stanga < j) 
        quicksort (v, stanga, j);
    if (i < dreapta) 
        quicksort (v, i, dreapta);
}

void afisare(){
  for(int i=1; i<=n; i++)
	fprintf(g,"%d ",sir[i]);
	fclose(g);
}

int main(){
	citire();
	quicksort(sir,1,n);
	afisare();
	return 0;
}