2019独角兽企业重金招聘Python工程师标准>>>

/*** 计数排序* * 不用比较的排序算法,时间可以突破O(NlgN)* * 时间复杂度O(N),稳定* * 适用于所有需要排序的数据值都比较小的时候,也就是说下面传递的max值一般不会大到哪里去* */@Testpublic void countingSort(){//待排序的分数int[] scores={77,92,85,98,62,100,68,77,92,100};//将最大值传入以作为计数上限countingSort(scores,100);System.out.println(Arrays.toString(scores));} private void countingSort(int[] scores, int max) {int[] count=new int[max+1];//利用count数组对scores中每个元素计数for(int i=0;i<scores.length;i++){count[scores[i]]++;}//统计<=i的元素的个数for(int i=1;i<count.length;i++){count[i]+=count[i-1];}//创建大小和scores数组一样的数组,用来存入已拍好序的数组元素int[] copy=new int[scores.length];//逆序遍历可以保证计数排序的稳定性for(int i=copy.length-1;i>=0;i--){//count[i]表示小于等于i元素的数量,就是i元素的位置,那么count[scores[i]]-1表示小于等scores数组第i号元素的位置//这里就将它插入到copy数组的合适的位置就行copy[count[scores[i]]-1]=scores[i];//由于可能存在重复元素,所以放入一个元素之后,要将它的count-1,这样才能保证下一个相同元素能放到前面一格count[scores[i]]--;//如果要采用简写,可以考虑copy[--count[scores[i]]]=scores[i],以上写法为了方便理解}//将copy复制到scores上for(int i=0;i<copy.length;i++){scores[i]=copy[i];}}

转载于:https://my.oschina.net/u/1378920/blog/414761

算法导论——计数排序相关推荐

  1. 排序算法之计数排序、基数排序和桶排序

    转自:http://www.cnblogs.com/ttltry-air/archive/2012/08/04/2623302.html 计数排序,基数排序,桶排序等非比较排序算法,平均时间复杂度都是 ...

  2. C++算法之计数排序

    C++算法之计数排序 文章目录 C++算法之计数排序 一.算法描述 二.代码实现 三.复杂度分析 一.算法描述 给定长度为n的序列,假设已知序列元素的范围都是[0..K]中的整数,并且K的范围比较小( ...

  3. 算法导论之排序和顺序统计学

    排序:对N个数的序列重排过程.待排序的数,一般是选择记录中数据集的关键字key作为排序的值,而数据集中其他数据(称为:卫星数据)以key为中心移动.实际上,对于排序过程中,key的移动和交换,卫星数据 ...

  4. 【排序算法】计数排序引发的围观风波——一种O(n)的排序

    前言 计算机课上,老师给一串数字6 1 6 9 9 1 4 2 1 5 8 8,问道:这一串数字,你们写个程序给我看,要求效率较高.学不出来的别下课了. 顿时场下一片哗然,但有很多小朋友硬着头皮啪啪啪 ...

  5. java sorted排序_【算法】排序算法之计数排序

    前几回,我们已经对冒泡排序.直接插入排序.希尔排序.选择排序.快速排序.归并排序.堆排序做了说明分析.本回,将对计数排序进行相关说明分析. 一.排序算法系列目录说明 冒泡排序(Bubble Sort) ...

  6. 【排序算法】计数排序

    当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 Θ(n + k).计数排序不是比较排序,排序的速度快于任何比较排序算法. 由于用来计数的数组B的长度取决于待排序数组中数据的范围(等于 ...

  7. 排序算法(6)----计数排序

    不知道为什么,突然编辑器不支持颜色丰富的intellij IDEA直接复制了,博主有点沮丧,因此我先用图片的形式展示并分析,然后在最后会将全部代码呈上 排序思想:在一个数组中,对于每一个数据,都统计有 ...

  8. c++ 二维数组 排序_【算法】排序算法之计数排序

    前几回,我们已经对[算法]排序算法之冒泡排序.[算法]排序算法之插入排序.[算法]排序算法之希尔排序.[算法]排序算法之选择排序.[算法]排序算法之快速排序.[算法]排序算法之归并排序.[算法]排序算 ...

  9. 算法导论 — 比较排序算法对比实验

    <算法导论>这本书介绍了5种比较排序算法:插入排序.冒泡排序.归并排序.堆排序.快速排序.我们现在通过实验来对比这5种排序算法的运行时间.用随机数发生器生成不同长度的数组,将每种算法应用于 ...

最新文章

  1. Spark UDF用户自定义函数
  2. Boost:BOOST_VERIFY_MSG扩展的用法测试程序
  3. git如何合并指定文件内容_git小技巧--如何从其他分支merge个别文件或文件夹
  4. SQL 调试:无法启动 T-SQL 调试。未能附加到 SQL Server 进程
  5. 操作系统进程调度先来先服务FCFS
  6. java jsp的指令_[javaEE] jsp的指令
  7. P8U8 IT这块出书门槛相对比较低
  8. 软件工程关于自动生成四则运算题目程序的见解
  9. Web — 选择器+浮动+清除
  10. oracle Rac的心跳线不支持交叉线?
  11. weex scroller滚动列表实践
  12. mac格式化系统恢复|mac格式化后怎么恢复?
  13. 12345政府热线报告
  14. 5个小组,只有一个女黑客,他们居然要模仿妲己?
  15. 找工作总结(微电子、FPGA方向)
  16. Android 设置横屏或竖屏
  17. 分享saas门店收银系统源码的商品发布与编辑功能重构
  18. 作为计算机专业学生,说一说校招
  19. 业务数据与基础数据思考
  20. 大型机操作系统-TSO的操作方法

热门文章

  1. 安全配置交换机端口 提高网络安全性
  2. Postfix无法正常发送邮件故障的排除
  3. 按对象某属性排序的几种方法
  4. 深度学习的异构加速技术(一):AI 需要一个多大的“心脏”?
  5. [iOS]过渡动画之高级模仿 airbnb
  6. HTML5地理定位用法
  7. 让更多人能够使用Hadoop
  8. SQL Server 2008 Analysis Services 多维数据库一步一步从入门到精通
  9. 【VIOLA】宁可食无肉,不可居无竹
  10. How to resolve unassigned shards in Elasticsearch——写得非常好