0
点赞
收藏
分享

微信扫一扫

计数排序

编程练习生J 2021-09-27 阅读 63

算法步骤

动图演示

复杂度

时间复杂度 = O(n + k)空间复杂度 = O(n)

代码实现

public static void countingsort(int[] arr,int min, int max) {

        int[] arrs = new int[arr.length];

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

        //数组  计数
        for (int i = 0; i < arr.length; i++) {
            nums[arr[i] - min]++;
        }

        //计数累加
        for (int i = 1; i < nums.length; i++) {
            nums[i] += nums[i - 1];
        }

        //反向填充
        for (int i = arr.length - 1; i >= 0; i--) {
            int number = arr[i];
            int count = nums[number];
            arrs[count - 1] = number;
            nums[number]--;
        }
 }
举报

相关推荐

0 条评论