Cod sursa(job #240196)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 6 ianuarie 2009 23:09:19
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
//quick sort
#include<stdio.h>
#define N 500001
int n,i,a[N];
void readd(),QS(int L,int R),prints();
int main()
{
	readd();
	QS(1,n);
	prints();
	return 0;
}
void readd()
{
	freopen("algsort.in","rt",stdin);
	freopen("algsort.out","wt",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)scanf("%d",&a[i]);
}
void QS(int L,int R)
{
	int LL=L,RR=R,V,aux;
	V=a[(LL+RR)>>1];
	do
	{
	  while(a[LL]<V)LL++;
	  while(a[RR]>V)RR--;
	  if(LL<=RR){aux=a[LL];a[LL]=a[RR];a[RR]=aux;LL++;RR--;}
	}while(LL<=RR);
	if(L<RR)QS(L,RR);
	if(LL<R)QS(LL,R);
}
void prints()
{
	for(i=1;i<=n;i++)printf("%d ",a[i]);
}