目录

简单介绍计数排序

Java实现代码

运行结果

  • 简单介绍计数排序

计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。 [1] 当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(nlog(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O(nlog(n)), 如归并排序,堆排序)

  • 代码

实现计数排序(非比较排序,牺牲空间弥补时间)
1. 优点:比较快,通常快于其它排序算法
2. 缺点:需要知道元素范围,并且元素的范围不能太大,否者失去优点
注:计数排序是需要获取数组的最大值和最小值,假如条件没给出,可能还需要自己写个循环,里面同时比较最大和最小,然后才能知道存储计数的数组的大小
注:我这里以0-100的数为例 max - min +1

public static void main(String[] args) {int[] arr = {1,2,5,2,7,99,4};System.out.println("计数排序前" + Arrays.toString(arr));countingSort(arr);System.out.println("计数排序后" + Arrays.toString(arr));}public static  void countingSort(int[] arr) {int[] temp = new int[101];// 计数for (int i = 0; i < arr.length; i++) {temp[arr[i]]++;}// 将临时数组中数据依次放回原数组int index = 0;for (int i = 0; i < temp.length; i++) {// 多个数的话,index++while (temp[i]-- > 0) {arr[index++] = i;}}}
  • 结果

Java实现计数排序相关推荐

  1. 理解计数排序算法的原理和实现

    计数排序(Counting sort)是一种稳定的线性时间排序算法,其平均时间复杂度和空间复杂度为O(n+k),其中n为数组元素的个数,k为待排序数组里面的最大值.同样具有线性时间排序的算法还有桶排序 ...

  2. java最全基础知识_Java编程入门,计数排序(Counting Sort)怎么做?

    计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中. 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数. 计数排序(Counting sort)是一种稳定的排 ...

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

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

  4. 计数排序和桶排序 java代码实现

    文章目录 计数排序 java代码实现 单元测试 桶排序 java代码实现 单元测试 计数排序 java代码实现 package csdn.dreamzuora.sort;import java.uti ...

  5. [计数排序]统计三个数和的[最大概率](洛谷P2911题题解,Java语言描述)

    题目要求 P2911题目链接 分析 我用暴力思想做的,对每种和进行计数. 暴力的基本思想是计数排序,开一个数组,计数最后按照要求得到结果. 遍历的过程就很暴力哈哈哈-- 这位大神用期望做的,Orz → ...

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

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

  7. 排序算法---计数排序(java版)

    计数排序 原理 计数排序(Counting Sort) 使用了一个额外的数组 C,其中第 i 个元素是待排序数组A 中值等于 i 的元素的个数.然后根据数组 C 来将 A 中的元素排到正确的位置.其实 ...

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

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

  9. 排序算法:桶排序、计数排序、基数排序

    相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 这篇博客将主要介绍三种时间复杂度是 ...

最新文章

  1. Android-上传图片(-)_HttpURLConnection
  2. 8月3日云栖精选夜读 | 阿里巴巴宣布 Sentinel 开源,进一步完善 Dubbo 生态(附PPT和视频)...
  3. if else和switch的效率
  4. error inflating class binaryXML LayoutParams addRule()
  5. 【python】Python简介及优缺点
  6. bootstraptable获取所有数据_关于Redis中的五种数据结构,要知其然知其所以然
  7. hp服务器系统检测,HP服务器检测步骤
  8. 编译原理第三版课后习题
  9. 【推荐】PHP各种开源网站系统、cms系统一览[持续更新]
  10. debian 5常用软件包名称,及安装方法
  11. 【网易有数】BI数据分析工具图表制作
  12. 第九篇:ROS的gazebo三维物理仿真环境联合使用
  13. 学生用计算机怎么调,电脑怎么设置学生模式
  14. win10开机自动打开http://go.microsoft.com/fwlink/?LinkID=219472clcid=0x409
  15. 游戏对战平台搭建要选什么服务器
  16. Qt深入浅出(十五)QTableView
  17. 用Qt操作Word文档
  18. 【遇见Doris】Apache Doris 在京东广告平台的应用
  19. 程序员兼职私活的网站
  20. asp.net 全局sql注入处理 sql关键字过滤 global过滤sql

热门文章

  1. 学python入门基础教程[推荐]
  2. 大白菜U盘重装win7系统教程,PE重装win7系统教程
  3. 回文素数(杭电OJ,不喜欢这个题)
  4. 手机端网页设计尺寸,手机端网页设计图片尺寸
  5. Mininet系列实验(一):Mininet使用源码安装
  6. 20190926CF训练
  7. moment获取本月、上个月、近三个月时间段
  8. 谷歌浏览器自定义标签页 newtab
  9. sass 转换为 css
  10. CodeForces 596C Wilbur and Points