#include <stdio.h>
#include <string.h>
#define size 10
#define D 5
int GetDigit(int M, int i)
{
while(i > 1)
{
M /= 10;
i--;
}
return M % 10;
}
void RadixSort(int *num, int len)
{
int i, j, k, l, digit;
int allot[10][size];
memset(allot, 0, sizeof(allot));
for (i = 1; i <= D; i++)
{
for (j = 0; j < len; j++)
{
digit = GetDigit(num[j], i);
k = 0;
while (allot[digit][k])
{
k++;
}
allot[digit][k] = num[j];
}
l = 0;
for (j = 0; j < 10; j++)
{
k = 0;
while (allot[j][k])
{
num[l++] = allot[j][k++];
}
}
memset(allot, 0, sizeof(allot));
}
}
int main()
{
int i, num[size] = {52, 200, 4, 1034, 17, 3319, 8324, 3112, 603, 8};
RadixSort(num, size);
for (i = 0; i < size; i++)
{
printf("%d ", num[i]);
}
printf("\n");
return 0;
}