编辑代码

import java.util.Arrays;

public class LinearCountingSort {
    public static void linearCountingSort(int[] array) {
        if (array.length == 0)
            return;

        int min = array[0], max = array[0];
        for (int i = 1; i < array.length; i++) {
            if (array[i] < min)
                min = array[i];
            else if (array[i] > max)
                max = array[i];
        }

        int[] countArray = new int[max - min + 1];

        for (int i = 0; i < array.length; i++)
            countArray[array[i] - min]++;

        int idx = 0;
        for (int i = 0; i < countArray.length; i++) {
            while (countArray[i] > 0) {
                array[idx++] = i + min;
                countArray[i]--;
            }
        }
    }

    public static void main(String[] args) {
        int[] array = {6,5,6,3,6,2,4,5};
        linearCountingSort(array);
        System.out.println(Arrays.toString(array));
    }
}