It is a sorting algorithm that is used to sort element. Radix sort is the method that many people begin to use when alphabetizing a large list of name or numeric number.Specifically ,

The list of names is first sorted according to the first letter of each name. That is, the names are arranged in 26 classes,where the first class consist of those name that begin with “A”, the second class consists of  those name that begin with “B”,and so on.During the second pass, each class is alphabetized according to the second letter of the name.And so on.

• The time complexity of Radix sort is O(kn) and space complexity of Radix sort is  O(k+n).the running time of Radix appears to be better than Quick Sort for a wide range of input numbers.

Let us take an example of radix sort

Given to a list ,the numbers would be sorted in three phases. the list is (248,140,261,323,438,120,221,443,266).

(A)- In the first phase, the once digits are sorted into list.. The number  are collected box by box ,from pocket 8 to 0.(Note 261 will now be at the bottom of the pile and 438 at the top of the pile.) The cards are now rein put to the sorter.

(B)- In the second phase, the tens digits are sorted into pockets,Again the card are collected pocket by pocket and rein put to the sorter.

In the last phase and third phase, we will notify that the hundred digit are sorted into pockets.

So the final list is by ascending order to sorted digits or number is (120,140, 221,248,261,266,323,438,443).

1- for i<-1 to d do

2-use a stable sort to array A on digit i

//counting sort will do the job

The code for radix sort assumes that each element in the n-element array A has d- digits,where digit 1 is the lowest -order digit and d is the highest-order digit.

### Program for Radix Sort in C

Run
#include<stdio.h> //including library files

int max(int a[]); //declaring functions
void main()   //defining main()
{
int i;
int a[10]={92,106,365,90,33,19,72,56,45,12};  //initializing array with values
printf("\n The sorted list is: \n");  //printing the sorted list
for(i=0;i<10;i++)
printf(" %d", a[i]);
}

int max(int a[])  //giving the definition to max()
{
int max=a[0], i;  //finiding the largest number
for(i=1;i<10;i++) { if(a[i]>max)
max = a[i];
}
return max;
}
{
int bucket[10][10], bucket_count[10]; //declaring variables
int i, j, k, remainder, NOP=0, divisor=1, maxi, pass; //declaring variables
maxi =  max(a);
while( maxi>0)
{
NOP++;
maxi/=10;
}
for(pass=0;pass<NOP;pass++) // Initialization of the buckets
{
for(i=0;i<10;i++)
bucket_count[i]=0;
for(i=0;i<10;i++)
{
// sort the numbers according to the digit at passth place
remainder = (a[i]/divisor)%10;
bucket[remainder][bucket_count[remainder]] = a[i];
bucket_count[remainder] += 1;
}
// collect the numbers after PASS pass
i=0;
for(k=0;k<10;k++)
{
for(j=0;j<bucket_count[k];j++)
{
a[i] = bucket[k][j];
i++;
}
}
divisor *= 10;

}
}

#### Output:

The sorted list is:
12 19 33 45 56 72 90 92 106 365

## Sorting

Sorting algorithms are easy to learn but are really important for college semester exams and companies offering package between 3 – 6 LPA would ask direct searching questions in online test/ interviews.