#include<stdio.h>
void radixsort(int arr[], int n);
int main()
{
int arr[100],num,i;
printf("How many elements do you want to Enter for radix sort: ");
scanf("%d",&num);
printf("\n Enter the elements for radix sort: \n");
for(i = 0 ; i < num ; i++ )
{
scanf("%d",&arr[i]);
}
printf("\n Before Implementing Radix Sort:");
for(i = 0; i < num; i++)
{
printf("%d\t", arr[i]);
}
printf("\n");
radixsort(arr,num);
printf("\n Array Elements After Implementing Radix Sort: ");
for(i = 0; i < num; i++)
{
printf("%d\t", arr[i]);
}
printf("\n");
}
void radixsort(int array[], int n)
{
int bucket1[10][5],bucket2[10],b[10];
int i,j,k,l,num,div,largest,pass;
div=1;
num=0;
largest=array[0];
for(i=0 ; i < n ; i++)
{
if(array[i] > largest)
{
largest = array[i];
}
while(largest > 0)
{
num++;
largest = largest/10;
}
for(pass=0 ; pass < num ; pass++)
{
for(k=0 ; k < 10 ; k++)
{
bucket2[k] = 0;
}
for(i=0 ; i < n ;i++)
{
l = ((array[i]/div)%10);
bucket1[l][bucket2[l]++] = array[i];
}
i=0;
for(k=0 ; k< 10 ; k++)
{
for(j=0 ; j < bucket2[k] ; j++)
{
array[i++] = bucket1[k][j];
}
}
div*=10;
}
}
}
Output:-
