Pagini recente » Cod sursa (job #2907111) | Cod sursa (job #2385150) | Cod sursa (job #1139988) | Cod sursa (job #2819226) | Cod sursa (job #249494)
Cod sursa(job #249494)
#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);
}