上一篇
在众多排序算法中,计数排序(Counting Sort)是一种非常高效的非比较型整数排序算法。它适用于待排序元素为一定范围内的整数的情况,能够在O(n + k)的时间复杂度内完成排序,其中 n 是元素个数,k 是数据范围。本教程将带你从零开始理解并用 Java 实现计数排序,即使是编程新手也能轻松掌握!
计数排序的基本思想是:对每一个输入元素 x,确定小于 x 的元素个数,然后直接将 x 放到它在输出数组中的正确位置上。
举个例子:如果数组中有 3 个数字小于 5,那么 5 应该放在第 4 位(索引为 3)。
下面我们用 Java 编写一个完整的计数排序程序:
public class CountingSort { // 计数排序主方法 public static void countingSort(int[] arr) { // 找出数组中的最大值和最小值 int max = arr[0]; int min = arr[0]; for (int i = 1; i < arr.length; i++) { if (arr[i] > max) max = arr[i]; if (arr[i] < min) min = arr[i]; } // 创建计数数组,大小为 max - min + 1 int range = max - min + 1; int[] count = new int[range]; // 统计每个元素出现的次数 for (int num : arr) { count[num - min]++; } // 重构原数组 int index = 0; for (int i = 0; i < range; i++) { while (count[i] > 0) { arr[index++] = i + min; count[i]--; } } } // 测试方法 public static void main(String[] args) { int[] arr = {4, 2, 2, 8, 3, 3, 1}; System.out.println("排序前:"); for (int num : arr) { System.out.print(num + " "); } countingSort(arr); System.out.println("\n排序后:"); for (int num : arr) { System.out.print(num + " "); } }}
max - min + 1 的计数数组,统计每个数字出现的次数;优点:
缺点:
通过本教程,你已经掌握了 Java 计数排序 的核心原理与实现方式。作为一种线性时间排序算法,它在特定场景下性能卓越。建议你在实际项目中根据数据特点选择合适的排序算法。
记住我们的四个关键词:Java计数排序、计数排序算法、Java排序教程 和 线性时间排序。掌握它们,你就能在面试和开发中游刃有余!
祝你编程愉快,排序无忧!
本文由主机测评网于2025-12-04发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025122905.html