Cod sursa(job #468561)

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

#define Nmax 500001

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

int part(int v[], 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 v[], int st, int dr) {
	int poz;
	poz=part(v,st,dr);
	if(st<poz-1)
		qsort(v,st,poz-1);
	if(dr>poz+1)
		qsort(v,poz+1,dr);
}

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

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