欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java算法排序之计数排序

程序员文章站 2022-03-24 13:52:34
...

package 十大排序;

public class 计数排序 {

    public static void main(String[] args) {
        int[] arr={10,9,11,8,7,13,2,1,12,0,0};
        sort(arr);
        for (int i = 0; i <arr.length ; i++) {
            System.out.print(arr[i]);
            System.out.print(" ");
        }
    }

    private static void sort(int[] A) {
        int[] helper = maxOf(A);
        for (int i = 0; i < A.length; i++) {
            helper[A[i]]++;
        }

        int k = 0;
        for (int i = 0; i < helper.length; i++) {
            while (helper[i] > 0) {
                A[k++] = i;
                helper[i]--;
            }
        }

    }

    private static int[] maxOf(int[] A) {
        int max = -1;
        for (int i = 0; i < A.length; i++) {
            if (A[i] > max) {
                max = A[i];
            }
        }
        return new int[max + 1];
    }

}