Cod sursa(job #468558)

Utilizator brainwashed20Alexandru Gherghe brainwashed20 Data 4 iulie 2010 00:34:22
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h>

#define Nmax 500001

int v[Nmax], n;

void swap(int &a, int &b) {
	int aux;
	aux=a;
	a=b;
	b=aux;
}

int part(int st, int dr) {
	int i, poz, val;
	val=v[dr];
	poz=st-1;
	for(i=st; i<=dr; i++) 
		if(v[i]<=val)
			swap(v[++poz],v[i]);
	return poz;
}

void qsort(int st, int dr) {
	int poz;
	poz=part(st,dr);
	if(st<poz-1)
		qsort(st,poz-1);
	if(dr>poz+1)
		qsort(poz+1,dr);
}

int main() {
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	
	scanf("%d",&n);
	for(int i=1; i<=n; i++)
		scanf("%d",&v[i]);

	qsort(1,n);
	
	for(int i=1; i<=n; i++)
		printf("%d ",v[i]);
	printf("\n");
	
	return 0;
}