题目

一个数组,其数据范围在0~200之间,将其从小到大排序

解析

给定一个数组;

首先获取去最大值,然后创建一个长度为这个最大值+1的临时数组;

遍历原数组,如果原数组中的元素是n,在临时数组索引为n的位置加1;

临时数组为:

把元素的索引作为值,元素作为值的个数复制到原数组;

代码

public static void countSort(int[] arr) {if (arr == null || arr.length < 2) {return;}int max = Integer.MIN_VALUE;for (int i = 0; i < arr.length; i++) {max = Math.max(max, arr[i]);}int[] bucket = new int[max + 1];for (int i = 0; i < arr.length; i++) {bucket[arr[i]]++;}int i = 0;for (int j = 0; j < bucket.length; j++) {while (bucket[j]-- > 0) {arr[i++] = j;}}
}

有苦有乐的算法 --- 计数排序相关推荐

  1. 三种线性排序算法 计数排序、桶排序与基数排序—— 转自:BYVoid

    三种线性排序算法 计数排序.桶排序与基数排序 [非基于比较的排序] 在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销.排序算法有非常多种, ...

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

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

  3. 算法——计数排序与快速排序

    计数排序是一种算法复杂度 O(n) 的排序方法,适合于小范围集合的排序.比如100万学生参加高考,我们想对这100万学生的数学成绩(假设分数为0到100)做个排序.我们如何设计一个 最高效的排序算法. ...

  4. 【vlfeat】O(n)排序算法——计数排序

    今天想在网上找一个实现好的er算法来着,没啥具体的资料,无奈只能看vlfeat的mser源码,看能不能修修补补实现个er. 于是,看到某一段感觉很神奇,于是放下写代码,跑来写博客,也就是这段 1 /* ...

  5. 数据结构与算法 | 计数排序

    之前的几篇讲解了所有常用的比较排序,这次就来讲一讲非比较排序的计数排序. 计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用.和其他排序不一样,计数排序并不是通过比较元素的大小来实现的,而是通过统计 ...

  6. 三种线性排序算法 计数排序、桶排序与基数排序-BYVoid

    转自:BYVoid [非基于比较的排序] 在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销.排序算法有非常多种,如我们最常用的快速排序和堆 ...

  7. 排序算法——计数排序详解

    在排序的最终结果中,各元素的次序依赖于它们之间的比较.这类排序算法被称为比较排序.对于包含 nnn 个元素的输入序列来说,任何比较排序算法在最坏情况下都要经过至少 O(nlogn)O(n\ log\ ...

  8. 十大排序算法——计数排序

    计数排序 一. 计数排序介绍 二. 计数排序基础版 三. 计数排序改进版 四. 优化最终版本_空间节省 一. 计数排序介绍 计数排序(Counting sort)是一种稳定的排序算法.计数排序使用一个 ...

  9. 算法 - 计数排序(Counting_Sort)

    目录 引言: 学习: 什么是计数排序(Counting_sort)? 定义: 算法思想: 排序过程: Step 1 : Step 2 : Step 3 : Step 4 : Step 5 : 依次进行 ...

最新文章

  1. Linux属于下面哪一种软件,【单选题】下面软件中属于自由软件开放源码的是( )。 A. Unix B. Linux C. Mi...
  2. mongodb cond 模糊查询_为了实现在线库的复杂查询,你还在双写吗?
  3. [bzoj1797][Ahoi2009]Mincut 最小割
  4. hadoop上lzop的安装
  5. 暑期实习面试——艾锝科技,Python实习生
  6. [2020多校A层11.18] 三角田地(因式分解)
  7. 如何在家访问公司的文件服务器,企业的共享文件,该怎么高效管理?
  8. 7.请解释泛型list集合的长度为什么动态的?_Java面试题集合篇一
  9. 基于JAVA+Servlet+JSP+MYSQL的党员信息管理系统
  10. angular 实现无限极联动下拉
  11. Pandas——筛选数据(loc、iloc)
  12. 从零开始学习python编程-和尧名大叔一起从0开始学Python编程-循环
  13. Java回调函数实例
  14. ENVI/IDL 批量裁剪同一地区的多幅影像-第五篇
  15. 编程题(买帽子求第三便宜价格)
  16. Volley读取文档和图片
  17. Silicycle反相C-18 SPE固相萃取小柱
  18. 罗振宇跨年演讲精华版:2017年小心这五只黑天鹅
  19. AppStore发布流程(从证书创建到app发布一站式)
  20. 文字直接转语音,一直都这么简单!

热门文章

  1. 为什么开发iSee图片专家?
  2. OSError: [WinError 87] 参数错误。
  3. P12-Windows与网络基础-Windows组管理
  4. 非正式协议与正式协议的区别
  5. 自定义Windows 10开始菜单的10种方法
  6. 电商交易之订单中心设计(二)
  7. Linux 下的截屏并编辑的工具-flamshot安装及使用
  8. Notepad++查看二进制文件——HexEditor插件
  9. 周易六十四卦——遁卦
  10. 编码:8421 BCD码(彻底弄懂+6是什么意思,为什么要加6)