Java排序算法之计数排序如何实现
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要为大家展示了"Java排序算法之计数排序如何实现",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Java排序算法之计数排序如何实现"这篇文章吧。
千家信息网最后更新 2025年11月08日Java排序算法之计数排序如何实现
这篇文章主要为大家展示了"Java排序算法之计数排序如何实现",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Java排序算法之计数排序如何实现"这篇文章吧。
计数排序是非比较的排序算法,用辅助数组对数组中出现的数字计数,元素转下标,下标转元素
计数排序优缺点
优点:快
缺点:数据范围很大,比较稀疏,会导致辅助空间很大,造成空间的浪费
使用范围:数据较为密集或范围较小时适用。
思路
1.找出最大元素max
2.初始化一个max+1的数组

3.将每个元素的计数存储在数组中各自的索引处
4.存储计数数组元素的累积和
5.数组中找到原始数组的每个元素的索引
计数排序代码实现
public class CountingSort { private static int[] countingSort(int[] arr) { //1、求取最大值和最小值,计算中间数组的长度:中间数组是用来记录原始数据中每个值出现的频率 int min = arr[0], max = arr[0]; for (int i : arr) { if (i > max) { max = i; } if (i < min) { min = i; } } //2、有了最大值和最小值能够确定中间数组的长度 //例如存储 5-0+1=6 int[] countArray = new int[max - min + 1]; //3、循环遍历旧数组计数排序: 就是统计原始数组值出现的频率到中间数组B中 for (int i : arr) { countArray[i - min] += 1; //数的位置上+1 } //4、统计数组做变形,后边的元素等于前面的元素之和 for (int i = 1; i < countArray.length; i++) { countArray[i] += countArray[i - 1]; } //5、倒序遍历原始数组,从统计数组中找到正确的位置,输出到结果数组 int[] resultArray = new int[arr.length]; for (int i = arr.length - 1; i >= 0; i--) { //给resultArray的当前位置赋值 resultArray[countArray[arr[i] - min] - 1] = arr[i]; //给countArray的位置的值-- countArray[arr[i] - min]--; } return resultArray; } public static void main(String[] args) { int[] arr = {1,28,3,21,11,7,6,18}; int[] sortedArr = countingSort(arr); System.out.println(Arrays.toString(sortedArr)); }}时间复杂度:O(n+k)
以上是"Java排序算法之计数排序如何实现"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
数组
排序
元素
算法
原始
最大
位置
内容
数据
篇文章
范围
存储
很大
最小
下标
最大值
空间
索引
长度
频率
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
学网络安全专业好找工作吗
无法连接vivo服务器
具有口碑的分布式数据库架构
网络安全等级测评的原因
变电站网络安全工程
安全通防攻击服务器
什么是管理信息数据库
怎么清空服务器磁盘
服务器检测内存报错
软件开发学校
windos软件开发
地图数据库设计过程
在线考试系统软件开发源码
为什么量子特攻无法连接服务器
虹口区常规网络技术服务参考价格
数据库乱数指令
桂阳学计算机软件开发培训机构
哪里有软件开发培训班没有
成都关于软件开发培训
潍坊红海网络技术
服务器硬盘黄灯闪烁绿灯常亮
阿拉伯数字字体软件开发
页游服务器安全连接错误6
关系数据库单码
英国网络安全硕士难学吗
大专软件开发培训
梅州悦购互联网科技有限公司
传奇一般几级服务器
正龙科技阳光互联网
cago进入任意官方服务器失败