# Bucket or radix sort in C.

`01  #include <stdio.h> 02  #define MAX 100 03  #define SHOWPASS 04  05  void print(int *a, int n) 06   { 07    int i; 08    for (i = 0; i < n; i++) 09    printf("%dt;", a[i]); 10   } 11  void radix_sort(int *a, int n) 12   { 13    int i, b[MAX], m = 0, exp = 1; 14    for (i = 0; i < n; i++) 15     { 16      if (a[i] > m) 17      m = a[i]; 18     } 19    while (m / exp > 0) 20     { 21      int box[10] = { 0 }; 22      for (i = 0; i < n; i++) 23      box[a[i] / exp % 10]++; 24      for (i = 1; i < 10; i++) 25      box[i] += box[i - 1]; 26      for (i = n - 1; i >= 0; i--) 27      b[--box[a[i] / exp % 10]] = a[i]; 28      for (i = 0; i < n; i++) 29      a[i] = b[i]; 30      exp *= 10; 31     #ifdef SHOWPASS 32     printf("nnPASS : "); 33     print(a, n); 34     #endif 35     } 36   } 37  int main() 38  { 39   int arr[MAX]; 40   int i, num; 41   printf("nEnter total elements (num < %d) : ", MAX); 42   scanf("%d", &num); 43   printf("n Enter %d Elements : ", num); 44   45   for (i = 0; i < num; i++) 46   scanf("%d", &arr[i]); 47   printf("n ARRAY : "); 48   print(&arr[0], num); 49   radix_sort(&arr[0], num); 50   printf("n nSORTED : "); 51   print(&arr[0], num); 52   53   return 0; 54   } `
` `
` OUTPUT :  Enter total elements (num < 100) : 5  Enter 5 Elements :  111 32 15463 2355 6  ARRAY : 111  ;32  ;15463  ;2355   ;6 ;  PASS : 111   ;32  ;15463  ;2355   ;6 ;  PASS : 6   ;111    ;32     ;2355   ;15463  ;  PASS : 6   ;32     ;111    ;2355   ;15463  ;  PASS : 6   ;32     ;111    ;2355   ;15463  ;  PASS : 6   ;32     ;111    ;2355   ;15463  ;  SORTED : 6     ;32     ;111    ;2355   ;15463  ;`