Pagini recente » Cod sursa (job #195624) | Cod sursa (job #90096) | Cod sursa (job #571599) | Cod sursa (job #1075761) | Cod sursa (job #249765)
Cod sursa(job #249765)
#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);
}