Cod sursa(job #655263)

Utilizator Oancea.CatalinOancea Catalin Oancea.Catalin Data 1 ianuarie 2012 21:55:32
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<fstream>
using namespace std;
#define IN "algsort.in"
#define OUT "algsort.out"
#define MaxN 500005
FILE *f, *g;
int v[MaxN];
long int i, n;
void QS(int v[MaxN], int stanga, int dreapta)
{
	int i, j, mijloc, aux;
	i=stanga;
	j=dreapta;
	mijloc=v[stanga+(dreapta-stanga)/2];
	while(i<=j)
	{
		while(v[i]<mijloc)
			i++;
		while(v[j]>mijloc)
			j--;
		if(i<=j)
		{
			aux=v[i];
			v[i]=v[j];
			v[j]=aux;
			i++;
			j--;
		}
	}
	if(stanga<j)
		QS(v,stanga,j);
	if(dreapta>i)
		QS(v,i,dreapta);
}
int main()
{
	f=fopen(IN,"r");
	g=fopen(OUT,"w");
	
	fscanf(f, "%ld", &n);
	for(i=1; i<=n; ++i)
		fscanf(f, "%d", &v[i]);
	QS(v,1,n);
	for(i=1; i<=n; ++i)
		fprintf(g, "%d ", v[i]);
	fclose(f);
	fclose(g);
	return 0;
}