1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.Arrays;

public class Sample187 {
    public static int[] countingSort(int min, int max, int[] data) {
        int[] counter = new int[max - min + 1];
        for (int i: data) {
            counter[i - min]++;
        }

        int[] result = new int[data.length];
        int index = 0;
        for (int i = 0; i < counter.length; i++) {
            for (int count = 0; count < counter[i]; count++) {
                result[index++] = i + min;
            }
        }
        return result;
    }

    public static void main(String[] args) {
        int[] sort = countingSort(-1, 10, new int[] {-1, 9, 4, 8, 9, 6, 3, 9, 5, 2});
        System.out.println(Arrays.toString(sort));
    }
}