java排序——桶排序
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排序——桶排序相关推荐
- 算法知识点-排序-桶排序
Notes:在面试过程中,除非明显声明,一般时间复杂度都是基于比较的排序. 桶排序 桶排序是一种排序的思想,它指的是不基于比较的排序,而是利用桶来完成排序的工作,之前介绍的冒泡,选择,插入,快排,堆排 ...
- 十大经典排序算法详解(三)-堆排序,计数排序,桶排序,基数排序
养成习惯,先赞后看!!! 你的点赞与关注真的对我非常有帮助.如果可以的话,动动手指,一键三连吧!!! 十大经典排序算法-堆排序,计数排序,桶排序,基数排序 前言 这是十大经典排序算法详解的最后一篇了. ...
- 记数排序 桶排序 基数排序
为什么要写这样滴一篇博客捏...因为一个新初一问了一道水题,结果就莫名其妙引起了战斗. 然后突然发现之前理解的桶排序并不是真正的桶排序,所以写一篇来区别下这三个十分相似的排序辣. 老年菜兔的觉醒!!! ...
- 理论基础 —— 排序 —— 桶排序
[概述] 桶排序是一种稳定的排序方法,其是非比较类排序中最简单的一种. 其基本思想是:假设待排序记录的值都在 0~m-1 之间,设置 m 个桶,将值为 i 的记录分配到第 i 个桶中,然后再将各个桶中 ...
- 宇宙最简单排序:桶排序
目录 介绍: 我的程序: 介绍: c++的排序方法非常多,比如啥冒泡啊.选择啊.插入啊......,有时候编游戏也用到排序,但我是一个很勤(lan)快(duo)的人,想用冒泡什么的忒麻烦了,复杂度又高 ...
- 史上最简单的排序-桶排序
原谅我很久都没发作品,主要是本羊羔遇到了点棘手的问题-- 话不多说,进入正题: 目录 题目 精讲桶排概念 实际生活->举例 计算机语言->举例 代码和题目 题目 我们需要给n个自然数排序( ...
- 比快排更快的排序 ——桶排序
桶排序利用了"空间换时间的思想"和标记的技巧 原题 1.https://www.luogu.org/problemnew/show/P1059 2.https://www.luog ...
- 水桶平分 java_关于java:桶排序算法代码问题
我需要在Java中实现以下内容. 输入:整数数组 输出:重新排列数组以具有以下内容: 假设原始数组中的第一个元素的值为x 在新数组中,假设x在位置I,即data[I] = x.然后,对所有x和所有j ...
- 用Java代码写一个桶排序
桶排序是一种非常快速的排序算法,它的时间复杂度为 O(n),只要有足够的空间. 下面是用 Java 实现桶排序的代码示例: public class BucketSort {public static ...
最新文章
- Swift直接解析YApi接口为模型
- 使用jconsole监控JVM内存
- 深入理解IIS的多线程工作机制
- rpm安装的mysql如何数据迁移_linux下mysql数据库的rpm安装步骤及常见问题的解决
- Python PyCharm利用PyQt5使QPlainTextEdit支持拖放文件,类提升,重写QPlainTextEdit类
- Block循环引用问题(Objective-c)
- 18岁男子吸电子烟一年肺如70岁老人,怒诉电子烟公司
- 【jvm】jvisualvm 离线下载安装插件
- React学习笔记—属性转移
- 9. PHP 之 Factory pattern(工厂设计模式)
- .mcs与.bin文件格式有什么区别?
- 遥感软件显示影像名称-影像挑选查看等操作
- 徐张生:三级分销不是传销,人人店已经占据行业绝对优势
- 13. 罗马数字转整数
- 33款可用来抓数据的开源爬虫软件工具
- android+apk+不被杀毒软件,大多数APK应用都会被杀毒软件报毒吗?
- 牛顿迭代法计算平方根
- 在浏览器拉起应用的方式
- eclipse 创建项目报项目存在的解决方案(Invalid project name: Project xxx already exists)...
- Springboot与国际化(i18n)
热门文章
- android+单利模式中传递context,Android的Context详解
- python if语句能否判断中文,Python之判断语句(if语句)
- su如何变成实体_不用建模就能生成地形,SU怎么办到的?
- arthas-Java诊断工具
- Vue Router webpack
- android relativelayout 点击事件,Android Relativelayout点击背景行为
- Python游戏开发pygame模块,Python实现球球碰撞小游戏
- java如何用c 的方法_JAVA如何调用C/C++方法
- python 图形化socket编程_Python黑帽编程2.8 套接字编程
- 计算机不能启动 如何排除故障,开工发现电脑无法开机 如何排查故障?