bucket java_桶排序(BucketSort)(java)
一、原理
桶排序的工作原理是吧区间划分为n个大小相同的子区间,这样的区间称为桶。然后将n个输入的数分步到各个桶中去。每个桶再个别的排序,然后按照次序吧各个桶
中的元素列出来即可。
二、时间复杂度
桶排序是一种鸽巢排序的一种归纳结果。当要被排序阵列内的数值是均匀分配的时候,桶排序使用线性时间(O(n))。但桶排序并不是比较排序,它不受
O(nlongn)下限的影响。
eg:对大小为[1...1000]范围内的n个整数A[1..n]排序。可以把桶设置为大小为10的范围,具体而言设集合B[1]存储[1..10]的整数,集合B[2]存储(10..20]的整数,
i=1,2,,100.总共100个桶然后扫描A[i],吧每个A[i]放入到对应的B[j]中。然后再对每个桶里的数字排序。
假设有n个数字,有m个桶,如果数字是平均分布的,则每个桶里面平均有n/m个数字。如果每个桶里中的数字采用快速排序,那么整个算法的复杂度是
O(n+m*n/m*log(n/m)) = O(n+nlogn-nlogm).当m接近n时,桶排序复杂度接近O(n)。
三、代码
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
import java.util.List;
public class BucketSort {
int bucketSize = 10
int arraySize = 1000;
public static void main(String[] args) {
// TODO Auto-generated method stub
BucketSort bs = new BucketSort();
int[] array = bs.getArray();
bs.bucketSort(array);
}
public int[] getArray(){
int[] arr = new int[arraySize /3];
Random r = new Random();
for(int i = 0; i < arraySize /3 ; i++)
{
arr[i] = r.nextInt(100000);
}
return arr;
}
public void bucketSort(int[] a)
{
List bucket[] = new ArrayList[bucketSize];
for(int i=0; i < a.length ; i++)
{
int temp = a[i]/10000;
if(bucket[temp] == null)
{
bucket[temp] = new
ArrayList();
}
bucket[temp].add(a[i]);
}
//对桶内各个元素进行排序
for(int j=0;j
{
intsertSort(bucket[j]);
printList(bucket[j]);
}
}
private void printList(List list) {
// TODO Auto-generated method stub
while(list.size()>0)
{
System.out.print(list.remove(0) +"\t");
}
}
private void intsertSort(List list) {
// TODO Auto-generated method stub
Collections.sort(list);
}
}
bucket java_桶排序(BucketSort)(java)相关推荐
- [转载] 令牌桶算法和漏桶算法python_排序算法(七):Bucket Sort 桶排序
参考链接: 用Python进行存储桶Bucket Sort排序 Couting Sort 计数排序虽然快,但其只能对整数进行排序有一点的局限性.而 Bucket Sort 桶排序则没有这个限制.这里我 ...
- C++bucket sort桶排序的实现算法(附完整源码)
C++bucket sort桶排序的实现算法 C++bucket sort桶排序的实现算法完整源码(定义,实现,main函数测试) C++bucket sort桶排序的实现算法完整源码(定义,实现,m ...
- 排序算法----桶排序(java版)
桶排序 桶排序(Bucket Sort)顾名思义,会用到"桶",我们可以将其想象成一个容器,核心思想是将要排序的数据分到几个有序的桶里,每个桶里的数据再单独进行排序.桶内排完序之后 ...
- 桶排序c语言,桶排序(Bucket Sort)的数组实现
桶排序的数组实现 桶排序Bucket Sort从1956年就开始被使用,该算法的基本思想是由E. J. Issac R. C. Singleton提出来. 桶排序(Bucket Sort)是迄今为止最 ...
- 常用排序算法(八)桶排序
桶排序 概要 本章介绍排序算法中的桶排序.内容包括: 1. 桶排序介绍 2. 桶排序图文说明 3. 桶排序实现 3.1 桶排序C实现 3.2 桶排序C++实现 3.3 桶排序Java实现 转载请 ...
- 排序算法java 简书_史上最全经典排序算法总结(Java实现)
查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中.因为其实现代码较短,应用较常见.所以在面试中经常会问到排序算法及其相关的问题.但万变不离其宗,只要熟悉了思想,灵活运用也不是难事.一般在 ...
- 桶排序(BucketSort)(java)
一.原理 桶排序的工作原理是吧区间划分为n个大小相同的子区间,这样的区间称为桶.然后将n个输入的数分步到各个桶中去.每个桶再个别的排序,然后按照次序吧各个桶 中的元素列出来即可. 二.时间复杂度 桶排 ...
- Java基础知识强化51:经典排序之桶排序(BucketSort)
1. 首先说明三点: (1)桶排序是稳定的 (2)桶排序是常见排序里最快的一种,比快排还要快-大多数情况下 (3)桶排序非常快,但是同时也非常耗空间,基本上是最耗空间的一种排序算法 2. 桶排序的分析 ...
- 桶排序算法(基于Java实现)
title: 桶排序算法(基于Java实现) tags: 桶排序算法 桶排序算法的原理和代码实现 一.桶排序算法的原理 桶排序,顾名思义,会用到"桶",核心思想是将要排序的数据分到 ...
最新文章
- 201671010128 2017-11-12《Java程序设计》之图形程序设计
- 1 图片channels_【深度学习】卷积神经网络图片分类案例(pytorch实现)
- TextWatcher() 的用法
- mysql alter table_mysql alter table 修改表命令详细介绍
- 数据结构之哈夫曼编码
- selenium+webdriver+java(基本小例子及初始化三种浏览器)---------------
- 使用ZbarSDK实现扫描二维码以及条形码功能(iOS)
- html转换成avi,HTML_视频转换大师WinMPG Video Convert 6.63,支持格式丰富,可快速完成AVI(RM - phpStudy...
- 梯形法则 matlab代码,matlab第二章常微分方程的数值解法
- 使用好压(HaoZip)软件打包EverEdit制作安装程序
- Exchange Server 2016 CU22升级更新
- 计算机桌面体验,如何安装win10的桌面体验功能?
- 常用Java工具类:java抽奖码生成
- 请注意!新办理的电话卡,有以下情况会导致“二次实名”!
- 三层交换机与单臂路由的优缺点
- 拉普拉斯金字塔图像融合原理
- 在hbuilder制作APP时使用echarts:堆叠柱状图
- 译文: C28x Compiler Error and Warning Messages
- 转载-工业界视频理解解决方案大汇总(人工智能前沿讲习)
- 点心云pcdn跑不起来解决办法(不起量)
热门文章
- win11更新软件商店
- 转)计算机领域的顶级会议和期刊
- Python+Vue计算机毕业设计美食网站设计与实现62e76(源码+程序+LW+部署)
- You have not agreed to the Xcode license.
- 十进制转化为二进制(栈算法)
- 互联网架构设计 (高并发高可用性)
- 文献阅读:SimCSE:Simple Contrastive Learning of Sentence Embeddings
- IDEA springboot启动报错java.lang.UnsatisfiedLinkError: no tcnative-1 in java.library.path
- 如何看懂html和css,怎么能看懂css
- 05 pyecharts 基本图表(示例代码+效果图)