Site Search:

Radix Sort




 
    public class LSD {
        public static void radix(String[] a, int W) { //W: sort by the first W characters
            int N = a.length;
            int R = 256;
            String aux = new String[N];
            for(int d = W-1; d >=0; d--) {
                int[] count = new int[R + 1];
                for(int i = 0; i < N; i++) {
                    count[a[i].charAt[d] + 1] ++;  //count char frequency
                }
                for(int r = 0; r < R; r++) {
                    count[r+1] += count[r];
                }
                for(int i = 0; i < N; i++) {
                    aux[count[a[i].charAt[d]]++] = a[i];
                }
                for(int i = 0; i < N; i++) {
                    a[i] = aux[i];
                }
            }
        }
    }