This is a C Program to implement Radix Sort. The idea of Radix Sort is to do digit by digit sort starting from least significant digit to most significant digit. Radix sort uses counting sort as a subroutine to sort.

Here is source code of the C Program to Implement Radix Sort. The C program is successfully compiled and run on a Linux system. The program output is also shown below.

`#include<stdio.h>`

int getMax(int arr[], int n) {

int mx = arr[0];

int i;

for (i = 1; i < n; i++)

if (arr[i] > mx)

mx = arr[i];

return mx;

`}`

void countSort(int arr[], int n, int exp) {

int output[n]; // output array

int i, count[10] = { 0 };

`// Store count of occurrences in count[]`

for (i = 0; i < n; i++)

count[(arr[i] / exp) % 10]++;

for (i = 1; i < 10; i++)

count[i] += count[i - 1];

`// Build the output array`

for (i = n - 1; i >= 0; i--) {

output[count[(arr[i] / exp) % 10] - 1] = arr[i];

count[(arr[i] / exp) % 10]--;

`}`

for (i = 0; i < n; i++)

arr[i] = output[i];

`}`

`// The main function to that sorts arr[] of size n using Radix Sort`

void radixsort(int arr[], int n) {

int m = getMax(arr, n);

int exp;

for (exp = 1; m / exp > 0; exp *= 10)

countSort(arr, n, exp);

`}`

void print(int arr[], int n) {

int i;

for (i = 0; i < n; i++)

printf("%d ", arr[i]);

`}`

int main() {

int arr[] = { 170, 45, 75, 90, 802, 24, 2, 66 };

int n = sizeof(arr) / sizeof(arr[0]);

radixsort(arr, n);

print(arr, n);

return 0;

`}`

Output:

$ gcc RadixSort.c $ ./a.out 2 24 45 66 75 90 170 802

**Sanfoundry Global Education & Learning Series – 1000 C Programs.**

Here’s the list of Best Reference Books in C Programming, Data Structures and Algorithms.