计数排序(桶排序思想)

这段代码是一个计数排序算法的实现。计数排序是一种非比较排序算法,适用于整数数组,其时间复杂度为O(n+k),其中n是数组长度,k是数组中的最大值。以下是该算法的步骤:

首先检查输入数组是否为空或长度小于2,如果是,则直接返回,不进行排序。

遍历数组,找到数组中的最大值。

创建一个大小为最大值加1的桶(bucket)数组,用于存储每个元素出现的次数。

再次遍历数组,将每个元素对应的桶中的计数加1。

最后,遍历桶数组,将桶中的元素按照计数依次放回原数组中。

这段代码实现的计数排序算法的时间复杂度和空间复杂度如下:

时间复杂度

  1. 寻找最大值:遍历整个数组以找到最大值,这一步的时间复杂度是 𝑂(𝑛),其中 n 是数组 arr 的长度。
  2. 填充桶数组:再次遍历数组以填充桶数组,这一步的时间复杂度也是 𝑂(𝑛)。
  3. 生成排序数组:最后,遍历桶数组并构建排序后的数组,这一步的最坏情况时间复杂度是 𝑂(𝑛+𝑘),其中 𝑘 是数组中的最大值,因为需要遍历每个非零的桶。

因此,总的时间复杂度是 𝑂(𝑛+𝑛+𝑛+𝑘)=𝑂(𝑛+𝑘)。

空间复杂度

  1. 桶数组:需要一个额外的数组来作为桶,其大小是输入数组中的最大值加1,即 𝑘+1。因此,空间复杂度是 𝑂(𝑘)。

综上,这段代码的时间复杂度是 𝑂(𝑛+𝑘),空间复杂度是 𝑂(𝑘)。

public class test7 {
    public static void countSort(int[] arr){
        if(arr ==null || arr.length <2){
            return;
        }
        int max = Integer.MIN_VALUE;
        for (int i = 0; i < arr.length; i++) {
            max = Math.max(max , arr[i]);
        }
        int[] bucket = new int[max+1];
        for (int i = 0; i < arr.length; i++) {
            bucket[arr[i]]++;
        }
        int i =0;
        for (int j = 0; j < bucket.length; j++) {
            while (bucket[j]-- > 0){
                arr[i++] = j;
            }
        }
    }
}

相关推荐

  1. 计数排序排序思想

    2024-07-22 20:34:01       13 阅读
  2. 计数与基数排序

    2024-07-22 20:34:01       20 阅读
  3. python实现计数排序排序和基数排序算法

    2024-07-22 20:34:01       14 阅读
  4. 排序算法-排序

    2024-07-22 20:34:01       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 20:34:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 20:34:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 20:34:01       45 阅读
  4. Python语言-面向对象

    2024-07-22 20:34:01       55 阅读

热门阅读

  1. 分布式锁在AI大模型调用中的应用

    2024-07-22 20:34:01       19 阅读
  2. 学懂C语言(十三):C语言中判断与循环的用法

    2024-07-22 20:34:01       15 阅读
  3. git 过滤LFS文件下载

    2024-07-22 20:34:01       14 阅读
  4. 特别篇 函数基础

    2024-07-22 20:34:01       14 阅读
  5. 小抄 20240717

    2024-07-22 20:34:01       18 阅读
  6. [2024-7-22]面试题2

    2024-07-22 20:34:01       14 阅读
  7. PTA 基础题

    2024-07-22 20:34:01       14 阅读
  8. CUE-云原生配置语言

    2024-07-22 20:34:01       17 阅读
  9. QEMU入门

    2024-07-22 20:34:01       16 阅读