1. 程式人生 > >用最快速度將0*10範圍內的數進行排序

用最快速度將0*10範圍內的數進行排序

 @Test
    public void test() {
        int[] array = {9,0,1, 2, 5, 8, 1, 5, 1, 4, 6, 5, 4, 5, 4, 1, 5, 10};
        System.out.println(Arrays.toString(countSort(array)));
    }

    static int[] countSort(int[] array) {
//1.得到數列的最大值
        int max = array[0];
        int min = array[0];
        for (int
i = 1; i < array.length; i++) { if(array[i]>max){ max=array[i]; } } //2.根據數列最大值確定統計陣列的長度 int[] countArray=new int[max+1]; for (int i = 0; i < array.length; i++) { countArray[array[i]]++; } int index=0;
int[] sortArray=new int[array.length]; for (int i = 0; i < countArray.length; i++) { for (int j = 0; j < countArray[i]; j++) { sortArray[index++]=i; } } return sortArray; }