Cod sursa(job #254767)

Utilizator ada_sAda-Mihaela Solcan ada_s Data 7 februarie 2009 15:00:11
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
const long NMAX=500000;

long part(long jos, long sus);
void quicksort(long jos, long sus);

long long sir[NMAX];

int main()
{
	long i, n;
	freopen("algsort.in", "r", stdin);
	freopen("algsort.out", "w", stdout);
	scanf("%ld", &n);
	for (i=0; i<n; i++)
		scanf("%lld", &sir[i]);
	quicksort(0, n-1);
	for (i=0; i<n; i++)
		printf("%lld ", sir[i]);
	return 0;
}//main

long part(long jos, long sus)
{
	long p=jos, u=sus;
  long long	t;
	while (p<u)
	{
		while ((sir[p]<=sir[jos])&&(p<=u))
			p++;
		while ((sir[u]>sir[jos])&&(p<=u))
			u--;
		if (p<u)
		{
    	t=sir[p];
		  sir[p]=sir[u];
		  sir[u]=t;
		}//if
	}//while
	t=sir[jos];
	sir[jos]=sir[u];
	sir[u]=t;
	return u;
}//part

void quicksort(long jos, long sus)
{
	long p;
	if (jos<sus)
	{
	  p=part(jos, sus);
		quicksort(jos, p-1);
		quicksort(p+1, sus);
	}//if
}//quicksort