Cod sursa(job #249494)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 28 ianuarie 2009 16:53:55
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<stdio.h>
int n,i,a[500002];
void radix(int st, int dr, int bit);
int main()
{
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;++i)
		scanf("%d",&a[i]);
	radix(1,n,31);
	for(i=n;i>=1 && a[i]<=0;--i)
		printf("%d ",a[i]);
	for(i=1;i<=n && a[i]>0;++i)
		printf("%d ",a[i]);
	return 0;
}
void radix(int st, int dr, int bit)
{
	int s=st,d=dr,b=1<<bit,aux;
	if(bit==-1 || st==dr)
		return;
	while(d-s-1){
		if(a[s]&b){
			aux=a[s];
			a[s]=a[d];
			a[d]=aux;
			d--;
		}
		else
			s++;
	}
	radix(st,s,bit-1);
	radix(d,dr,bit-1);
}