当前位置: 首页 > news >正文

java排序算法-计数排序

计数排序的思路

计数排序的基本思路:

  1. 确定取值范围: 遍历整个待排序的数组,确定数组中元素的取值范围,找到最小值和最大值。
  2. 创建计数数组: 创建一个计数数组,其长度为取值范围的大小,用于统计原始数组中每个元素出现的次数。
  3. 统计元素个数: 遍历原始数组,将每个元素出现的次数记录到计数数组中,计数数组的索引对应于元素的值。
  4. 累加计数数组: 对计数数组进行累加操作,每个位置的值等于其前面所有位置值之和。这一步的目的是确定每个元素在排序后的数组中的位置。
  5. 构建有序数组: 创建一个与原始数组等长的临时数组,遍历原始数组,根据累加计数数组确定每个元素在有序数组中的位置,同时更新计数数组中对应元素的计数。
  6. 得到排序结果: 此时,临时数组就是排序完成的结果。
public class Sort {//5.计数排序public static int[] countingSort(int... array){int max=array[0],i,j;for(i=1;i<array.length;i++){if(array[i]>max){max=array[i];}}//新建max+1的整数数组int[] tempArray = new int[max+1];for (i = 0; i < array.length; i++) {tempArray[array[i]]++;}for (i = 0,j=0; i < tempArray.length; i++) {for (int k = 0; k < tempArray[i]; k++) {array[j++]=i;}}return array;}public static void main(String[] args) {int[] a={52,1,0,49,70,62,81,17};System.out.println(Arrays.toString(countingSort(a)));}
}

结果展示 

相关文章:

  • 非序列实现MEMS聚焦功能
  • 【Redis】hash类型
  • day37图像处理OpenCV
  • Huffman(哈夫曼)解/压缩算法实现
  • 高职人工智能技术应用专业(计算机视觉方向)实训室解决方案
  • 蜜罐管理和数据收集服务器:Modern Honey Network (MHN)
  • Linux 内核网络协议栈中 inet_stream_ops 与 tcp_prot 的深度解析
  • Python----深度学习(基于深度学习Pytroch簇分类,圆环分类,月牙分类)
  • uniapp 仿企微左边公司切换页
  • 第11章 面向分类任务的表示模型微调
  • 同步定时器的用户数要和线程组保持一致,否则jmeter会出现接口不执行’stop‘和‘×’的情况
  • MySQL元数据库完全指南:探秘数据背后的数据
  • Axure PR 9 中继器 标签
  • MTKAndroid13-Launcher3 屏蔽部分app不让显示
  • 如何让 HTML 文件嵌入另一个 HTML 文件:详解与实践
  • 电脑温度怎么看 查看CPU温度的方法
  • js数据结构之栈
  • 【Java】Maven3.5.0安装
  • Qt 调试信息重定向到本地文件
  • maven依赖排查与注意点
  • 商务部新闻发言人就中美经贸对话磋商情况答记者问
  • 5月资金面前瞻:政府债净融资规模预计显著抬升,央行有望提供流动性支持
  • 上海与世界|黄菊与上海建设中国式全球城市
  • 2025年第一批“闯中人”已经准备好了
  • 视频丨中国海警位中国黄岩岛领海及周边区域执法巡查
  • 中青旅:第一季度营业收入约20.54亿元,乌镇景区接待游客数量同比减少6.7%