#include<bits/stdc++.h>
using namespace std;
int temp[100];
int bucket[10];
int maxBit(int data[],int n)
{
int maxData = data[0];
for(int i=1;i<n;i++)
{
if(maxData<data[i])
maxData=data[i];
}
int d=1;
while(maxData>=10)
{
maxData/=10;
d++;
}
return d;
}
void radixsort(int data[],int n)
{
int d = maxBit(data,n);
int i,j,k;
int radix = 1;
for(i=1;i<=d;i++)
{
for(j=0;j<10;j++)
{
bucket[j]=0;
}
for(j=0;j<n;j++)
{
k=(data[j]/radix)%10;
bucket[k]++;
}
for(j = 1; j < 10; j++)
bucket[j] = bucket[j - 1] + bucket[j];
for(j = n-1; j>=0; j--)
{
k = (data[j] / radix) % 10;
temp[bucket[k] - 1] = data[j];
bucket[k]--;
}
for(j = 0; j < n; j++)
data[j] = temp[j];
radix = radix * 10;
}
}
int main()
{
int a[15]={3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
radixsort(a,15);
for(int i=0;i<15;i++)
cout<<temp[i]<<" ";
return 0;
}