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: