首页 > Java > java教程 > java中的计数排序

java中的计数排序

WBOY
发布: 2024-08-30 15:58:33
原创
1150 人浏览过

计数排序是一种在任何编程语言中都发挥着关键作用的算法,Java 也是如此。计数排序算法的主要目标是根据以小整数形式出现的键对对象集合进行排序,以用于对算法进行排序。它主要对键值对进行操作和计数,根据输出序列呈现元素的位置。  这种排序的运行时间与项目成线性关系,然后键值之间的差异位于最大值和最小值之间。

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

语法

Java 中执行计数排序没有特定的语法,但有一个逻辑流程,以算法的形式逐步根据输入执行计数排序,表示如下:

Class name {
Method name following sorting ()
{
# Find the length of array defined;
#the output character array will have sorted array
#Create a count arr to store count of each element, characters and initialize it 0
#Store count of each character element in the array
#Build output character and write the logic to make it operated in reverse order
#that builds output can now be copied from the previous array to the current
#Make use of the driver code to move and proceed.
}
登录后复制

Java 中计数排序如何工作?

  • 如前所述,计数排序算法在编程中起着重要作用;它对以收集格式存在的对象进行排序,并用于计算具有不同键和值对的存在元素的数量,并再次与算术计数一起使用,确定每个键值对存在的每个元素的位置最小值和最大值之间的差。
  • 如果检查的话,运行时间或时间复杂度本质上是线性的,具有数组中的所有元素以及最小和最大键值之间的差异,因此这些元素和排序技术适合直接使用键变化的情况不显着大于具有所需键的元素。
  • 虽然还有另一种算法可以支持大部分的key处理,但它的效率不如按要求计数排序和散列,因此可以用基数排序代替,以处理与以前相比大量key的情况.
  • 由于计数排序使用键和值对作为数组索引值的一部分,因此它不被视为比较排序。另外,比较排序的下限也是不允许的。
  • 桶排序也只是在相同的任务和类似的时间分析下才低于计数排序,但与当时的计数排序相比,桶排序需要动态数组、链表或大量内存来容纳存储桶中存在的元素,然后计数排序仅存储每个存储桶中单独的单个数字的值。
  • 存在某些输入和输出假设序列,因为计数排序的输入由 n 个项目的集合组成,其中每个项目都有非负整数键值,最大值的值为 k。计数排序的一些描述是对整数的线性格式序列进行简单排序的输入。
  • 数组的输出大多不包含具有某种键顺序的主要项目,但需要根据要求检查其使用。
  • 计数 Sort 的时间复杂度为 O (n+l),其中 n 是元素数量,l 是考虑输入的范围。
  • 此外,辅助空间仅为 O(n+l)。

java 中计数排序的示例

该程序通过考虑一些输入和输出序列集作为 Java 排序的一部分来演示计数排序。

代码

public class Counting_Sort_1{
void sort_0(char arr_0[])
{
int n_8 = arr_0.length;
char output_val[] = new char[n_8];
int count_0[] = new int[528];
for (int l_0 = 0; l_0 < 528; ++l_0)
count_0[l_0] = 0;
for (int y_1 = 0; y_1 < n_8; ++y_1)
++count_0[arr_0[y_1]];
for (int l_0 = 1; l_0 <= 526; ++l_0)
count_0[l_0] += count_0[l_0 - 1];
for (int l_0 = n_8 - 1; l_0 >= 0; l_0--) {
output_val[count_0[arr_0[l_0]] - 1] = arr_0[l_0];
--count_0[arr_0[l_0]];
}
for (int l_0 = 0; l_0 < n_8; ++l_0)
arr_0[l_0] = output_val[l_0];
}
public static void main(String []args){
Counting_Sort_1 ob = new Counting_Sort_1();
char arr_0[] = { 's', 'a', 'r', 'c', 's', 'f', 'o',
'i', 'n', 'c', 'a', 'r', 'm' };
ob.sort_0(arr_0);
System.out.print("Sorted_character_array_in_Counting_Sort ");
for (int l = 0; l < arr_0.length; ++l)
System.out.print(arr_0[l]);
}
}
登录后复制

输出:

java中的计数排序

说明

在上面的示例中,我们在 Java 中实现了计数排序,其中遵循以下步骤才能正确执行:

  • 创建一个具有 Selection_Sort_0 的类,然后遵循该类的输入集。
  • 创建类后,就会创建一个方法来存储将具有排序数组的字符数组。
  • 创建计数数组,其意义是将值作为独立实体以键和值对的形式存储,进一步以字符形式存储为计数。
  • 需要更改计数来计算输出数组中当前字符的实际值和位置。
  • 使用字符集构建输出数组,使其稳定并可逆序操作。
  • 将排序后的数组复制到当前数组,以某种方式或另一种方式对数组进行排序。
  • 执行驱动程序代码以进一步驱动整个代码库,以从输入源获取输出。

结论

计数排序是一种排序算法,应用于由一系列元素组成的数组上进行排序。排序将基于数组中存在的键和值对或最小值或最大值的差异。当需要批量使用整数实现时,计数排序给开发者提供了很多帮助。

以上是java中的计数排序的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板