Wednesday 20 August 2014

Filled Under:

C Program to implement Radix Sort

Share


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.

Example of C Program to implement Radix Sort

#include <stdio.h>
#define MAX 100
#define SHOWPASS
void print(int *a, int n) 
{
  int i;
  for (i = 0; i < n; i++)
   printf("%dt", a[i]);
}
 
void radix_sort(int *a, int n)
{
  int i, b[MAX], m = 0, exp = 1;
  for (i = 0; i < n; i++) {
  if (a[i] > m)
  m = a[i];
 }
 while (m / exp > 0)
 {
  int box[10] = { 0 };
  for (i = 0; i < n; i++)
   box[a[i] / exp % 10]++;
  for (i = 1; i < 10; i++)
   box[i] += box[i - 1];
   for (i = n - 1; i >= 0; i--)
   b[--box[a[i] / exp % 10]] = a[i];
   for (i = 0; i < n; i++)
   a[i] = b[i];
   exp *= 10;
  
#ifdef SHOWPASS
   printf("nnPASS   : ");
   print(a, n);
#endif
 }
}
 
int main() 
{
  int arr[MAX];
  int i, num;
  
  printf("nEnter total elements (num < %d) : ", MAX);
  scanf("%d", &num);
  printf("nEnter %d Elements : ", num);
  for (i = 0; i < num; i++)
  scanf("%d", &arr[i]);
  printf("nARRAY  : ");
  print(&arr[0], num);
  radix_sort(&arr[0], num);
  printf("nnSORTED  : ");
  print(&arr[0], num);
  
  return 0;
}