Cod sursa(job #373101)

Utilizator titusuTitus C titusu Data 12 decembrie 2009 17:31:58
Problema Sortare prin comparare Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <cstdio>
using namespace std;

int a[500010],n;

void read(){
	scanf("%d",&n);
	for(int i=0;i<n;++i)
		scanf("%d",a+i);
}

void write(){
	for(int i=0;i<n;++i)
		printf("%d ", *(a+i));
}

void qs(int st,int dr){
	if(st<dr){
		int i=st,j=dr,d=(st+dr)>>1,aux;
		aux=a[st]; a[st] = a[d]; a[d]=aux;
		d=0;
		while(i<j){
			if(a[i]>a[j]){
				aux=a[i], a[i]=a[j], a[j]=aux;
				d=1-d;
			}
			i+=d;
			j-=1-d;
		}
		qs(st,i-1);
		qs(i+1,dr);
	}
}

int main(){
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	read();
	qs(0,n-1);
	write();
	return 0;
}