Cod sursa(job #249765)

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