Cod sursa(job #615386)

Utilizator moonbeamElma Moonbeam moonbeam Data 9 octombrie 2011 16:48:20
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<cstdio>
#include<queue>
using namespace std;
#define NM 500001
int v[NM];
int schimb(int st, int dr)
{
	int val=v[dr],poz=st,i;
	for (i=st; i<dr; ++i)
		if (v[i]<val)
		{
			int aux=v[i];
			v[i]=v[poz];
			v[poz]=aux;
			
			++poz;
		}
	int aux=v[dr];
	v[dr]=v[poz];
	v[poz]=aux;
	return poz;
}
void qsort(int x, int y)
{
	if (x>=y)
		return;
	int p=schimb(x,y);
	qsort(x,p-1);
	qsort(p+1,y);
}
void afis(int N)
{
	for (int i=1; i<=N; ++i)
		printf("%d ",v[i]);
}
int main()
{
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	int N;
	scanf("%d",&N);
	for(int i=1; i<=N; ++i)
		scanf("%d",&v[i]);
	qsort(1,N);
	afis(N);
	return 0;
}