Java基數排序代碼實現

 public static void radixSort(int []a,int n){
        if (n<=1)return;
        int max = a[0];
        for (int i=0;i<n;i++){
            if (max<a[i])max = a[i];
        }

        for (int exp = 1; max/exp>0; exp*=10){
            countSort(a,exp);
        }
    }

    private static void countSort(int[] a, int exp) {
        int [] c = new int[10];
        for (int i=0;i<a.length;i++){
            c[(a[i]/exp)]++;
        }

        for (int i=1;i<c.length;i++){
            c[i] += c[i-1];
        }

        int [] r = new int[a.length+1];
        for (int i=a.length-1;i>=0;i--){
            int index = c[(a[i]/exp)%10]-1;
            r[index] = a[i];
            c[(a[i]/exp)%10]--;
        }

        for (int i=0;i<a.length;i++){
            a[i] = r[i];
        }
    }

    public static void main(String[] args) {
        int [] array = new int []{6,5,7,2,3,3,2,3,2,1,1,6,5,7,2,3,6,5,7,2,3,6,5,7,2,3,2,1,1,};
//        radixSort(array,array.length);

        System.out.println(Arrays.toString(array));
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章