计数排序是线性排序。

升序排序:

public  void sortByAsc(int[] data) {if(data == null || data.length <= 1)return;/** find the range of data */int range = data[0];for(int i = 1; i< data.length; i++){if(range < data[i]){range = data[i];}}if (range <= 0) {  System.out.println("边界不能为负数");return; }  /** count sort */countSortByAsc(data,range);}private void countSortByAsc(int[] data, int range) {/**建一个长度为range+1的的数组countArray,里面的每一个元素初始都置为0(Java里面默认就是0)。*/int[] countArray = new int[range + 1];/**遍历待排序的数组,计算其中的每一个元素出现的次数,比如一个key为i的元素出现了3次,那么countArray[i]=3。*/for(int i = 0;i < data.length; i++){int val = data[i];if(val < 0 || val > range){System.out.println("下标超界");return;}countArray[val] += 1;}for(int i = 0,index = 0;i < countArray.length ; i++){for(int j = 0; j <countArray[i];j++ ){data[index] = i;index++;}}}

  降序排序:

public  void sortByDesc(int[] data) {if(data == null || data.length <= 1)return;/** find the range of data */int range = data[0];for(int i = 1; i< data.length; i++){if(range < data[i]){range = data[i];}}if (range <= 0) {  System.out.println("边界不能为负数");return; }  /** count sort */countSortByDesc(data,range);}private void countSortByDesc(int[] data, int range) {/**建一个长度为range+1的的数组countArray,里面的每一个元素初始都置为0(Java里面默认就是0)。*/int[] countArray = new int[range + 1];/**遍历待排序的数组,计算其中的每一个元素出现的次数,比如一个key为i的元素出现了3次,那么countArray[i]=3。*/for(int i = 0;i < data.length; i++){int val = data[i];if(val < 0 || val > range){System.out.println("下标超界");return;}countArray[val] += 1;}for(int i = countArray.length - 1,index = 0;i >=0 ; i--){for(int j = 0; j <countArray[i];j++ ){data[index] = i;index++;}}}

  

转载于:https://www.cnblogs.com/Gabby/p/6523148.html

数据结构之排序算法Java实现(8)—— 线性排序之计数排序算法相关推荐

  1. 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...

  2. 十大经典排序算法(图解与代码)——冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序(Python and Java)

    排序 重新排列表中的元素,使表中的元素按照关键字递增或者递减 内部排序: 指在排序期间,元素全部存放在内存中的排序 外部排序: 指在排序期间元素无法全部同时存放在内存中,必须在排序的过程中根据要求不断 ...

  3. java堆算法,Java 基本功04-JVM-Java堆详解和GC算法

    JVM GC 机制 1. 在此之前需要了解相关概念: 1.1 Java 堆内存: 在 HotSpot JVM 实现中 Heap 内存被"分代"管理. JVM 的内存首先被分割成两部 ...

  4. 【完整可运行源码+GIF动画演示】十大经典排序算法系列——冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    以前也零零碎碎发过一些排序算法,但总是不系统, 这次彻底的对排序系列做了一个整体的规划, 小伙伴们快快mark哦~ [GIF动画+完整可运行源代码]C++实现 冒泡排序--十大经典排序算法之一 [GI ...

  5. l bfgs算法java代码_数值优化:理解L-BFGS算法

    译自<Numerical Optimization: Understanding L-BFGS>,本来只想作为学习CRF的补充材料,读完后发现收获很多,把许多以前零散的知识点都串起来了.对 ...

  6. tsp问题用蚁群算法java实现_TSP解决之道——蚁群算法

    参考 蚁群算法原理与应用1-自然计算与群体智能 简介 1.蚁群算法(Ant Clony Optimization,ACO)是一种群智能算法,它是由一群无智能或有轻微智能的个体(Agent)通过相互协作 ...

  7. 数据结构之排序算法Java实现(2)——选择类排序之堆排序算法

    这个文章旨在存代码,看了很多网上写推排序的算法,感觉写的过于臃肿,我去努力地理解了思想,自己写的,有什么问题欢迎指正. 首先是升序排序,这个要建小顶堆,Java代码如下: public <T e ...

  8. java的 交换排序 快速排序算法_数据结构之排序算法Java实现(4)—— 交换类排序之快速排序算法...

    快速排序算法属于"交换类"的排序,它的效率主要跟数据分布是否对称有关. 升序排序: /** * 快速排序 * 升序排序 */ @Override public > void ...

  9. 跑胡子c语言算法,跑胡子胡牌算法Java版(带赖子、基于回溯算法)

    跑胡子规则 跑胡子,小写"一"到"十"各4张共40张,大写"壹"到"拾"各4张共40张. 砌牌:跑胡子为3人同玩,庄家砌 ...

  10. 亲戚关系关系算法java程序_C++并查集亲戚(Relations)算法实例

    本文实例讲述了C++并查集亲戚(Relations)算法.分享给大家供大家参考.具体分析如下: 题目: 亲戚(Relations) 或许你并不知道,你的某个朋友是你的亲戚.他可能是你的曾祖父的外公的女 ...

最新文章

  1. 一个非常好用的 Python 魔法库
  2. WindowsAPI每日一练(2) 使用应用程序句柄
  3. windows创建定时任务执行python脚本
  4. 疯狂java讲义之流程控制与数组
  5. php自己写配置项,创建配置文件 用PHP写出自己的BLOG系统 2
  6. 处理参数中存在多个连续空格,只显示一个空格,复制后搜索不到得问题
  7. mysqldump备份单表数据
  8. 发布程序后显示:未能创建类型
  9. proxy in nodejs code
  10. ssm 静态资源处理器
  11. iframe关于滚动条的去除和保留
  12. 95-50-050-java.nio.channels-NIO-NIO之Channel(通道)
  13. android服务开启线程,android之service与intentService的不同
  14. Code UI Automation脱离VS黑盒自动化测试工具编写
  15. 机器人学基础(一):空间描述与坐标变换
  16. Postman 汉化教程
  17. 怎么将图片转换成word文档?图片转word其实很简单
  18. 2022年上半年技术领域TOP 10高薪岗位出炉,第一名月薪4万
  19. AutoCAD块属性提取
  20. 工业设计公司在设计时有哪些注意的地方

热门文章

  1. ORA-28002 the password will expire
  2. H5_0020:判断安卓苹果平台
  3. kylin基础概念和基础性能优化
  4. Good, then we can start
  5. Fundamentals of speech signal processing
  6. 常用的字符串对象方法
  7. linux date -d 的一些使用方法
  8. 使用MS Test进行单元测试
  9. 学用 ASP.Net 之 System.Collections.Specialized.StringDictionary 类
  10. pgpool-II3.1 的内存泄漏(五)