1. 首页
  2. 课程学习
  3. Java
  4. 深入理解计数排序及其Java实现

深入理解计数排序及其Java实现

上传者: 2023-12-08 01:32:02上传 DOCX文件 22.03KB 热度 62次

计数排序是一种线性时间复杂度的排序算法,其核心思想是通过统计每个元素的出现次数,然后根据统计信息将元素放置到正确的位置。该算法具有较高的性能,尤其适用于一定范围内的整数排序。计数排序的特点包括简单易懂、稳定性好和线性时间复杂度等。然而,由于其需要额外的空间来存储计数数组,对于范围较大的数据集可能会消耗较多内存资源。适用场景主要集中在整数排序领域,特别是当输入数据的范围相对较小时,计数排序的性能表现更为出色。以下是一段简单的Java代码实现计数排序:

public class CountingSort {
    public static void countingSort(int[] arr) {
        int max = Arrays.stream(arr).max().orElse(0);
        int min = Arrays.stream(arr).min().orElse(0);
        int range = max - min + 1;
        int[] count = new int[range];
        int[] output = new int[arr.length];

        for (int i : arr) {
            count[i - min]++;
        }

        for (int i = 1; i < range; i++) {
            count[i] += count[i - 1];
        }

        for (int i = arr.length - 1; i >= 0; i--) {
            output[count[arr[i] - min] - 1] = arr[i];
            count[arr[i] - min]--;
        }

        System.arraycopy(output, 0, arr, 0, arr.length);
    }
}
下载地址
用户评论