编辑代码

class Main {

    public static void findMinMax(int[] arr, int[] minMax) {
        minMax[0] = arr[0]; 
        minMax[1] = arr[0];
        for(int i = 1; i < arr.length; i++) {
            if(arr[i] < minMax[0]) {
                minMax[0] = arr[i];
            } else if(arr[i] > minMax[1]) {
                minMax[1] = arr[i];
            }
        }
    }

    public static void lineCountSort(int[] arr, int[] orderedArr) {
        int[] minMax = new int[2];
        findMinMax(arr, minMax);
        int min = minMax[0];
        int max = minMax[1];
        
        int countLen = max - min + 1;
        int[] count = new int[countLen];
        
        for(int i = 0; i < countLen; i++) {
            count[i] = 0;
        }

        for(int j = 0; j < arr.length; j++) {
            count[arr[j] - min]++;
        }

        for(int k = 1; k < countLen; k++) {
            count[k] = count[k] + count[k-1];
        }

        for(int n = arr.length-1; n >= 0; n--) {
            orderedArr[--count[arr[n] - min]] = arr[n];
        }
    }

    public static void printArr(int[] arr) {
        for(int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
    
    public static void main(String[] args) {
        int[] arr = {62, 47, 96, 96, 62, 47, 96, 84};
        int[] orderedArr = new int[8];
        printArr(arr);
        System.out.println();
        lineCountSort(arr, orderedArr);
        printArr(orderedArr);
    }
}