桶排序

1.原理:

    将需要排序的数组分在有限的桶里

    然后对每个桶中的数分别排序

(对每个桶的操作:1.别的排序算法  2.以递归的方式继续使用桶排序)

2.过程:

  1. 假设待排序的一组数统一的分布在一个范围中,并将这一范围划分成几个子范围,也就是桶
  2. 将待排序的一组数,分档规入这些子桶,并将桶中的数据进行排序
  3. 将各个桶中的数据有序的合并起来

3.举个例子:

    设有数组 array = [29, 25, 3, 49, 9, 37, 21, 43]

    那么数组中最大数为 49

    先设置 5 个桶

    那么每个桶可存放数的范围为:0~9,10~19,20~29,30~39,40~49

    然后分别将这些数放人自己所属的桶

    然后,分别对每个桶里面的数进行排序

    或者在将数放入桶的同时用插入排序进行排序

    最后,将各个桶中的数据有序的合并起来

基数排序:

1.原理:

    桶排序的拓展(我没看出来这两者的联系喵喵喵?

    将整数按位数切割成不同的数字,然后按每个位数分别比较。

2.过程:

    首先,将要比较的数值统一成同样的数位长度(数位少的在前面补0)

    然后,从最低位开始,依次进行一次排序

    

3.再举个栗子(假装图文并茂嘿嘿嘿...

  通过基数排序对数组{53, 3, 542, 748, 14, 214, 154, 63, 616},它的示意图如下:

计数排序:

1.原理:

    把需要排序的数组 分到有限的桶里

2.过程:

    假设有一个a数组,其中装着要排序的数列

    a数列的数据范围为[x,y)

    创建一个大小为y的桶数组r

    将容量为y的桶数组中的每一个单元都看作一个独立的"桶"

    遍历每个数组a

    a的值为r数组的下标

    并将该桶存的数值+1

3.又举个栗子:

   a[3] = 5

   r[5]++;

假设a={8,2,3,4,3,6,6,3,9}, max=10。

此时,将数组a的所有数据都放到需要为0-9的桶中。如下图:

转载于:https://www.cnblogs.com/darlingroot/p/10786129.html

桶排序+基数排序+计数排序相关推荐

  1. 算法笔记-桶排序代码与原理、非比较排序、计数排序、基数排序、C#代码

    1. 计数排序 原理: 计数排序需要用到桶,其核心是不通过比较来获得数的大小,以桶的方式存数来计数 举例来说,一个数组是{3 2 2 1 3 5},共6个数,那么我们需要准备5个有序桶,即1号桶.2号 ...

  2. 八十五、再探希尔排序,桶排序,计数排序和基数排序

    @Author:Runsen 编程的本质来源于算法,而算法的本质来源于数学,编程只不过将数学题进行代码化. ---- Runsen 关于排序,其实还有很多,比如常见的希尔排序,桶排序,计数排序和基数排 ...

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

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

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

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

  5. 【算法自由之路】前缀树 桶排序之计数排序和基数排序

    [算法自由之路]前缀树 & 桶排序之计数排序和基数排序 前缀树(字典树) 首先是前缀树,前缀树是由字符构成的树结构,它记录有多少前缀字符通过,以及有多少个同样的字符串,其找这类信息的时间复杂度 ...

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

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

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

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

  8. 数据结构—排序算法总结(插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、合并排序、计数排序)

    *排序 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作. 稳定性 在待排序的数组中,如果出现多个相同的关键字,例如:98751555512,中出现重复的数字,在 ...

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

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

最新文章

  1. 工厂方法模式和抽象工厂模式
  2. 跨还是不跨?这是一个问题
  3. 哈工大操作系统环境配置
  4. java调用rocketmq_java操作RocketMQ
  5. 计算机无法用u盘重装系统,没有u盘电脑开不了机重装系统的方法步骤详细教程 - 系统家园...
  6. 【Siddhi】Siddhi 5 自定义函数简单使用
  7. Redis中两种持久化机制RDB和AOF
  8. 科猫网:72个白手起家创业点子推荐
  9. android自定义sidebar,Android仿微信通讯录列表侧边栏效果
  10. html document怎么转换成word,如何将HTML document文件类型转换成word document?
  11. Diligent调查发现,董事会成员是安全和公司治理的关键环节
  12. x264学习----x264.h结构体
  13. RecyclerView之点击item变色
  14. 计算机音乐文献,论音乐文献计算机编郭小株.pdf
  15. 猫猫学IOS(六)UI之iOS热门游戏_超级猜图
  16. 部分华为路由交换常用的基础实验总汇(不定时更新)
  17. 计算机维修进度安排表,教学进度表实验安排表考勤成绩册计算机网络技术教学进度表(计09本).doc...
  18. Cucumber Hooks
  19. ganymed ssh-2 for java_Jsch或SSHJ还是Ganymed SSH-2? - java
  20. a是有理数,a*a+5和a*a-5都是有理数的平方,问a是多少?

热门文章

  1. SAP Fiori Launchpad launchpad Designer组件和configuration组件的重要存储表一览
  2. Ui5 tool debug - ctrl alt shift s
  3. 如何在SAP云平台上创建Redis实例
  4. SAP透明工厂和弹性制造的原型mockup - SAP 工业 4.0 的一个尝试
  5. 如何把某个网站的SSL Server certificate链导入到ABAP Netweaver系统里
  6. CRM和C4C product category hierarchy的可编辑性控制逻辑
  7. C++map容器遍历删除:cannot increment value-initialized map/set iterator
  8. 数据科学项目(二)之明确问题及确立目标
  9. linux树莓派连接wifi热点,如何将树莓派设置为WiFi热点
  10. python参数估计_用python求参数估计的置信区间