Cod sursa(job #396169)

Utilizator otilia_sOtilia Stretcu otilia_s Data 14 februarie 2010 17:41:09
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <cstdio>
using namespace std;
int A[500006],n;

void citire()
{
	FILE *fin=fopen("algsort.in","r");
	fscanf(fin,"%d",&n);
	for (int i=1;i<=n;++i) fscanf(fin,"%d", &A[i]);
	fclose(fin);
}

void afisare()
{
	FILE *fout=fopen("algsort.out","w");	
	for (int i=1;i<=n;++i) fprintf(fout,"%d ", A[i]);
	fclose(fout);
}

void qsort(int st, int dr)
{
	int i=st,j=dr, val=A[(st+dr)>>1];
	do 
	 {
		while (A[i]<val && i<n) ++i;
		while (A[j]>val && j>1) --j;
		if (i<=j)
			{
			 int aux=A[i]; A[i]=A[j]; A[j]=aux;
			 ++i; --j;		
			}
	 }
	while (i<=j);
	if (st<j) qsort(st,j);
	if (i<dr) qsort(i,dr);
}

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