#include <stdio.h>
#include <stdlib.h>
int get_Max(int *a,int len)
{
int max = a[0],i;
for(i=1;i<len;i++)
{
if(a[i]>max)
max=a[i];
}
return max;
}
void Radixing(int *a,int exp,int len)
{
int i;
int *temp=(int*)malloc(sizeof(int)*len);
int tong[10]={0};
for(i=0;i<len;i++)
{
tong[a[i]/exp%10]++;
}
for(i=1;i<10;i++)
{
tong[i]+=tong[i-1];
}
for(i=len-1;i>=0;i--)
{
temp[--tong[a[i]/exp%10]] =a[i];
}
for(i=0;i<len;i++)
{
a[i] = temp[i];
}
free(temp);
}
void RadixSort(int *a,int len)
{
int max = get_Max(a,len);
int exp;
for(exp=1;max/exp>0;exp*=10)
{
Radixing(a,exp,len);
}
}
int main()
{
int i, a[] = {3, 2, 6, 5, 9, 8, 7, 4, 1, 0};
int length = sizeof(a)/sizeof(a[0]);
RadixSort(a, length);
for(i=0; i<length; i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}