Wednesday, 20 August 2014

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.

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;
}