Cod sursa(job #304451)

Utilizator cvicentiuCiorbaru Vicentiu Marian cvicentiu Data 13 aprilie 2009 10:36:17
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <stdio.h>
#define fin "algsort.in"
#define fout "algsort.out"
#define MaxN 500001
unsigned int v[500001],n;   
  
void qsort(unsigned int p,unsigned int q){
	unsigned int st=p,dr=q,x=v[(p+q)>>1];
	v[(p+q)>>1]=v[p];
	v[p]=x;
	while (st<dr){
		while (st<dr && v[dr]>=x) dr--;
		v[st]=v[dr];
		while (st<dr && v[st]<=x) st++;
		v[dr]=v[st];
	}
v[st]=x;
if (st-1>p) qsort(p,st-1);
if (st+1<q) qsort(st+1,q);
}

int main(){
	freopen(fin,"r",stdin);
	freopen(fout,"w",stdout);
	scanf("%d",&n);
	for (unsigned int i=1;i<=n;i++)
		scanf("%ld",&v[i]);
	qsort(1,n);
	for (unsigned int i=1;i<=n;i++)
		printf("%ld ",v[i]);
}