2019独角兽企业重金招聘Python工程师标准>>>

package jxau.blueDot.lyx;import java.util.ArrayList;
import java.util.Iterator;/*** * @author lyx*  @下午2:05:52* @TODO:*   桶排序*//***   桶排序:桶排序的思想是把区间[0,1)划分成n个相同大小的子区间,称为桶,* 然后将n个输入数分布到各个桶中去。 *     因为输入数均匀且独立分布在[0,1)上,所以,一般不会有很多数落在一个桶中的情况。 * 为了得到结果,先对各个桶中的数进行排序,然后按次序把各桶中的元素列出来。 *       桶排序的时间复杂度为O(n) * 若有n个待排数据,m个桶,空间复杂度为O(n+m)*/
public class BucketSort {/** * 桶排序算法,对arr进行桶排序,排序结果仍放在arr中 * @param arr */  public static void bucketSort(double arr[]){  int n = arr.length;  ArrayList arrList[] = new ArrayList [n];  //把arr中的数均匀的的分布到[0,1)上,每个桶是一个list,存放落在此桶上的元素   for(int i =0;i<n;i++){  int temp = (int) Math.floor(n*arr[i]);  if(null==arrList[temp])  arrList[temp] = new ArrayList();  arrList[temp].add(arr[i]);            }  //对每个桶中的数进行插入排序   for(int i = 0;i<n;i++){  if(null!=arrList[i])  insert(arrList[i]);  }  //把各个桶的排序结果合并   int count = 0; for(int i = 0;i<n;i++){  if(null!=arrList[i]){  Iterator iter = arrList[i].iterator();  while(iter.hasNext()){  Double d = (Double)iter.next();  arr[count] = d;  count++;  }  }  }  }  /** * 用插入排序对每个桶进行排序 * @param list */  public static void insert(ArrayList list){  if(list.size()>1){  for(int i =1;i<list.size();i++){  if((Double)list.get(i)<(Double)list.get(i-1)){  double temp = (Double) list.get(i);  int j = i-1;  for(;j>=0&&((Double)list.get(j)>(Double)list.get(j+1));j--)  list.set(j+1, list.get(j));  list.set(j+1, temp);  }  }  } }
}

转载于:https://my.oschina.net/liyixiangBlog/blog/266175

java排序——桶排序相关推荐

  1. 算法知识点-排序-桶排序

    Notes:在面试过程中,除非明显声明,一般时间复杂度都是基于比较的排序. 桶排序 桶排序是一种排序的思想,它指的是不基于比较的排序,而是利用桶来完成排序的工作,之前介绍的冒泡,选择,插入,快排,堆排 ...

  2. 十大经典排序算法详解(三)-堆排序,计数排序,桶排序,基数排序

    养成习惯,先赞后看!!! 你的点赞与关注真的对我非常有帮助.如果可以的话,动动手指,一键三连吧!!! 十大经典排序算法-堆排序,计数排序,桶排序,基数排序 前言 这是十大经典排序算法详解的最后一篇了. ...

  3. 记数排序 桶排序 基数排序

    为什么要写这样滴一篇博客捏...因为一个新初一问了一道水题,结果就莫名其妙引起了战斗. 然后突然发现之前理解的桶排序并不是真正的桶排序,所以写一篇来区别下这三个十分相似的排序辣. 老年菜兔的觉醒!!! ...

  4. 理论基础 —— 排序 —— 桶排序

    [概述] 桶排序是一种稳定的排序方法,其是非比较类排序中最简单的一种. 其基本思想是:假设待排序记录的值都在 0~m-1 之间,设置 m 个桶,将值为 i 的记录分配到第 i 个桶中,然后再将各个桶中 ...

  5. 宇宙最简单排序:桶排序

    目录 介绍: 我的程序: 介绍: c++的排序方法非常多,比如啥冒泡啊.选择啊.插入啊......,有时候编游戏也用到排序,但我是一个很勤(lan)快(duo)的人,想用冒泡什么的忒麻烦了,复杂度又高 ...

  6. 史上最简单的排序-桶排序

    原谅我很久都没发作品,主要是本羊羔遇到了点棘手的问题-- 话不多说,进入正题: 目录 题目 精讲桶排概念 实际生活->举例 计算机语言->举例 代码和题目 题目 我们需要给n个自然数排序( ...

  7. 比快排更快的排序 ——桶排序

    桶排序利用了"空间换时间的思想"和标记的技巧 原题 1.https://www.luogu.org/problemnew/show/P1059 2.https://www.luog ...

  8. 水桶平分 java_关于java:桶排序算法代码问题

    我需要在Java中实现以下内容. 输入:整数数组 输出:重新排列数组以具有以下内容: 假设原始数组中的第一个元素的值为x 在新数组中,假设x在位置I,即data[I] = x.然后,对所有x和所有j ...

  9. 用Java代码写一个桶排序

    桶排序是一种非常快速的排序算法,它的时间复杂度为 O(n),只要有足够的空间. 下面是用 Java 实现桶排序的代码示例: public class BucketSort {public static ...

最新文章

  1. Swift直接解析YApi接口为模型
  2. 使用jconsole监控JVM内存
  3. 深入理解IIS的多线程工作机制
  4. rpm安装的mysql如何数据迁移_linux下mysql数据库的rpm安装步骤及常见问题的解决
  5. Python PyCharm利用PyQt5使QPlainTextEdit支持拖放文件,类提升,重写QPlainTextEdit类
  6. Block循环引用问题(Objective-c)
  7. 18岁男子吸电子烟一年肺如70岁老人,怒诉电子烟公司
  8. 【jvm】jvisualvm 离线下载安装插件
  9. React学习笔记—属性转移
  10. 9. PHP 之 Factory pattern(工厂设计模式)
  11. .mcs与.bin文件格式有什么区别?
  12. 遥感软件显示影像名称-影像挑选查看等操作
  13. 徐张生:三级分销不是传销,人人店已经占据行业绝对优势
  14. 13. 罗马数字转整数
  15. 33款可用来抓数据的开源爬虫软件工具
  16. android+apk+不被杀毒软件,大多数APK应用都会被杀毒软件报毒吗?
  17. 牛顿迭代法计算平方根
  18. 在浏览器拉起应用的方式
  19. eclipse 创建项目报项目存在的解决方案(Invalid project name: Project xxx already exists)...
  20. Springboot与国际化(i18n)

热门文章

  1. android+单利模式中传递context,Android的Context详解
  2. python if语句能否判断中文,Python之判断语句(if语句)
  3. su如何变成实体_不用建模就能生成地形,SU怎么办到的?
  4. arthas-Java诊断工具
  5. Vue Router webpack
  6. android relativelayout 点击事件,Android Relativelayout点击背景行为
  7. Python游戏开发pygame模块,Python实现球球碰撞小游戏
  8. java如何用c 的方法_JAVA如何调用C/C++方法
  9. python 图形化socket编程_Python黑帽编程2.8 套接字编程
  10. 计算机不能启动 如何排除故障,开工发现电脑无法开机 如何排查故障?