原理:

分别从 个、十、百 ... 开始排序,第一次比较个位上的大小,第二次比较十位,以此类推。

其中比较的最大位数,即为数组中元素的最大位数(且不能为比较负数,如果比较负数需要在比较之前变成绝对值,在加负号)

步骤:

1.先创建二维数组存放10个桶

2.在创建一维数组存放每个桶存放元素的数量

3.遍历每个桶顺序取出元素

    public int[] bucketSort(int[] arr){//计算出最大的位数int maxLength = arr[0];for(int i=1;i<arr.length;i++){if(maxLength<arr[i]){maxLength=arr[i];}}//获得最大位数maxLength = (maxLength+"").length();//定义二维数组,存放10个桶int[][] buckets = new int[10][arr.length];//定义一维数组记录每个桶的元素下标位置int[] bucketsIndex = new int[10];//从个位开始遍历 个 -> 十 -> 百 -> 千for(int i=0,n=1;i<maxLength;i++,n*=10){//存数据for(int j=0;j<arr.length;j++){//获取要存的桶int bIndex = arr[j]/n%10;//存数据buckets[bIndex][bucketsIndex[bIndex]++] = arr[j];}//取数据//定义数组的下标int index = 0;for(int j=0;j<bucketsIndex.length;j++){//判断桶是否为空if(bucketsIndex[j]!=0){//遍历取数据for(int x = 0;x<bucketsIndex[j];x++){arr[index++] = buckets[j][x];}}bucketsIndex[j] =0;}}return arr;}

Java排序算法-桶排序相关推荐

  1. 十大经典排序算法-桶排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  2. 排序算法----桶排序(java版)

    桶排序 桶排序(Bucket Sort)顾名思义,会用到"桶",我们可以将其想象成一个容器,核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序.桶内排完序之后 ...

  3. 疯子的算法总结(六) 复杂排序算法 ② 桶排序

    从<基于比较的排序结构总结 >中我们知道:全依赖"比较"操作的排序算法时间复杂度的一个下界O(N*logN).但确实存在更快的算法.这些算法并不是不用"比较& ...

  4. 排序算法----桶排序(数组)

    桶排序是一种效率很高的排序算法,它的时间复杂度为O(N+M),(N个元素,范围为0--M),但桶排序有一定的限制,必须为非负整数,而且元素不宜过大. 算法思想: 设待排序序列的元素取值范围为0到m,则 ...

  5. 十大经典排序算法—桶排序

    1.算法思想: 桶排序是计数排序的升级版.它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定.为了使桶排序更加高效,我们需要做到这两点: 在额外空间充足的情况下,尽量增大桶的数量 使用的映 ...

  6. JavaScript算法——桶排序

    一.桶排序的原理 桶排序是计数排序的升级版.它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定.思路大致是, 设置一个定量的数组当作空桶: 遍历输入数据,并且把数据一个一个放到对应的桶里去 ...

  7. JavaScript实现十种经典排序算法(js排序算法)

    冒泡排序算法 冒泡排序(Bubble Sort)是一种简单直观的排序算法.冒泡排序算法的步骤描述如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素作同样的工作,从开始第一 ...

  8. 十大经典排序算法-选择排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  9. 十大经典排序算法-希尔排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

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

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

最新文章

  1. html表单注册功能的实现,仅一个form表单 js实现注册信息依次填写提交功能
  2. Scala中心基金会成立
  3. c#c#继承窗体_C#继承能力问题和解答 套装5
  4. python向量化编程技巧_神经网络基础之Python与向量化
  5. 大牛讲解Kubernetes实战
  6. android image 位移动画_ImageView自动来回循环移动,用到Animation
  7. PageAdmin网站建设教程:仿58同城站群系统实现不同地区Ip跳转不同分站
  8. Python读取 csv文件中文乱码处理
  9. 规则引擎Drools简述
  10. copy的过去式_copy什么意思_copy是什么意思中文翻译
  11. java毕业设计—— 基于java+JSP+SSH的网上购物系统设计与实现(毕业论文+程序源码)——网上购物系统
  12. 【语义分割数据集】——cityscape数据集类别名称
  13. Django:A server error occurred. Please contact the administrator.
  14. android打飞机游戏、MVP句子迷App、悬浮窗、RxJava+Retrofit、加载动画、定制计划App等源码
  15. 核心单词Word List 49
  16. 【PyG】文档总结以及项目经验(持续更新
  17. 微信小程序 表单控件【族谱聚微信小程序表单控件】
  18. latex集合的包含_latex 集合相关符号:实数集,整数集,并,包含,真包含
  19. 关于平稳退化,之前存在的问题
  20. 如何将linux装入空白硬盘,Windows 7将CDLinux装入硬盘的方法

热门文章

  1. linux下svn安装与版本控制
  2. 4款时尚优雅宋体Logo字体(可免费商用)
  3. 台式计算机 行业标准,GBT 9813.3-2017 计算机通用规范 第3部分:服务器国家标准...
  4. 设定pic单片机端口为输入_PIC单片机入门_输入输出端口详解
  5. linkedin第三方授权登录
  6. kali linux 黑别人电脑,如何使用 Kali Linux 黑掉 Windows
  7. 假设检验 python_数据清洗、假设检验
  8. vasp和ms_采用MS建模的基本步骤以及vasp新手入门需要注意的十个简单问题
  9. HTML5+JS调用摄像头
  10. 论文降重修改句子软件