1: /* k = number of digits
   2:    r = base of each digit (i.e., r = 10 for standard base 10) */
   3: 
   4: public static void radixsort(Elem A[], Elem B[], int k,
   5:                              int r, int count[]) {
   6:     int i, j, rtok;
   7: 
   8:     for(i=0,rtok = 1; i<k; i++, rtok *= r) {
   9:         for (j=0; j<r; j++)
  10:             count[j] = 0;
  11:         for(j=0; j<A.length; j++)
  12:             count[(A[k].key()/rtok)%r]++;
  13: 
  14:         for(j=1; j<r; j++)
  15:             count[j] = count[j-1] + count[j];
  16:         
  17:         for(j=A.length-1; j>=0; j--)
  18:             B[--count[(A[j].key()/rtok)%r]] = A[j];
  19: 
  20:         for(j=0; j<A.length; j++)
  21:             A[j] = B[j];
  22:     }
  23: }
  24: