Java 中的计数排序2025年5月12日 | 阅读 5 分钟 计数排序是 Java 中最常用的排序技术之一,它基于给定范围内的键进行排序。计数排序不通过比较元素来排序,而是通过计算具有不同键值的对象的数量来实现排序,类似于哈希。之后,它会执行一些算术运算来计算每个对象在输出序列中的索引位置。计数排序算法不被用作通用排序算法。 假设我们有一个输入数组 a{4, 3, 2, 5, 4, 3, 5, 1, 0, 2, 5},其值在范围 [0, 5] 内。 ![]() 我们计算数组中每个元素的出现次数,并将计数表示为数组 countArray。countArray[i] 表示数字 i 在数组 a 中的出现次数。 ![]() 因此,数字 0 和 1 各出现一次,2、3 和 4 各出现两次,5 出现三次。 ![]() 现在,借助 countArray,我们确定数组 a 中有多少个元素小于或等于 countArray 的每个元素。我们将小于或等于 countArray[i] 的所有元素相加。 在数组 a 中,
算法在获得 辅助 数组,即 countArray 后,我们进行排序以对数组 a 进行排序。以下是排序数组 a 元素的步骤。
因此,为了对输入数组 a 进行排序,我们反向遍历它,并从数字 5 开始。在 countArray 的索引 5 处,值为 11,这意味着数组 'a' 包含 11 个小于或等于数字 5 的元素。这意味着 5 将是排序数组中的最后一个元素。 ![]() 在将数字 5 移动到排序数组后,我们将 countArray[5] 的值减一。现在,反向顺序中的下一个数字是 2,在索引 2 处,值为 4,这意味着数组 'a' 包含四个小于或等于 2 的元素。因此,该数字将在排序数组中的第 4 个位置。 ![]() 输入数组 'a' 中的下一个数字是 0,countArray 中索引 0 的值为 1,这意味着输入数组 'a' 中只有一个元素等于 0。因此,0 将是排序数组中的第一个元素。 ![]() 我们对输入数组 'a' 的其余元素执行相同的操作。 对于元素 1 ![]() 对于元素 5 ![]() 对于元素 3 ![]() 对于元素 4 ![]() 对于元素 5 ![]() 对于元素 2 ![]() 对于元素 3 ![]() 对于元素 4 ![]() 排序数组 ![]() 让我们使用上面讨论的算法在 Java 中实现计数排序的逻辑。 CountingSortExample.java 输出 ![]() |
在 Java 中,方法是一组执行特定任务或操作的语句。它被广泛使用,因为它提供了代码的重用性,意味着编写一次即可多次使用。它还便于修改。每个方法都有自己的名称...
阅读 4 分钟
Stern-Brocot 序列是一个迷人的数学结构,它源于数论,并提供了一种系统的方法来枚举所有以最简形式表示的正有理数。该序列以 Moritz Stern 和 Achille Brocot 命名,在计算机科学、连分数甚至机械……
阅读 6 分钟
Java 字符串 在 Java 中,字符串本质上是一个表示字符序列的对象。字符数组的工作方式与 Java 字符串相同。例如:char[] ch={'j','a','v','a','t','p','o','i','n','t'}; String s=new String(ch); 与以下内容相同:String s="javatpoint"; Java String 类提供了许多方法来执行字符串上的操作,例如 compare()、concat()、...
阅读 4 分钟
QuickSort 是一种高效的分治排序算法,它递归地将数组划分为较小的子数组。多线程允许在不同分区上并行执行排序,利用多个处理器核心来减少执行时间。它允许程序同时执行两个或多个部分以...
5 分钟阅读
在 Java 中,先决条件是指在任何特定方法或操作可以开始执行之前必须达到的状态或条件。它有助于检查所有方法的参数是否正确,以及对象或系统的状态是否适合……
5 分钟阅读
数字补码问题是一个涉及二进制运算和位操作的有趣挑战。在本节中,我们将详细探讨这个问题,深入研究其背后的理论,并提供一个全面的 Java 解决方案。这个问题通常出现在编码...
5 分钟阅读
在本节中,我们将学习什么是 Pell 数,并创建 Java 程序来检查给定的数是否为 Pell 数。Pell 数程序经常在 Java 编码面试和学术中出现。Pell 数它是一系列或序列...
阅读 3 分钟
在本节中,我们将了解如何以对角线顺序打印矩阵。此外,创建一个以对角线顺序打印矩阵的 Java 程序。对角线顺序首先,我们将理解对角线打印顺序。考虑具有 4 行 5 列的以下矩阵。然后...
阅读 3 分钟
正在考虑的问题是指确定二叉树中任何路径上节点值的最大乘积。路径被认为是 starting from a particular node to any other node in...
5 分钟阅读
要从给定的序列创建最小数字,您必须了解序列如何定义要排列的数字模式。通常,序列包含诸如“I”(表示递增)和“D”(表示递减)之类的字符。目标是按顺序排列数字...
阅读 6 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India