一、原理

桶排序的工作原理是吧区间划分为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)相关推荐

  1. [转载] 令牌桶算法和漏桶算法python_排序算法(七):Bucket Sort 桶排序

    参考链接: 用Python进行存储桶Bucket Sort排序 Couting Sort 计数排序虽然快,但其只能对整数进行排序有一点的局限性.而 Bucket Sort 桶排序则没有这个限制.这里我 ...

  2. C++bucket sort桶排序的实现算法(附完整源码)

    C++bucket sort桶排序的实现算法 C++bucket sort桶排序的实现算法完整源码(定义,实现,main函数测试) C++bucket sort桶排序的实现算法完整源码(定义,实现,m ...

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

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

  4. 桶排序c语言,桶排序(Bucket Sort)的数组实现

    桶排序的数组实现 桶排序Bucket Sort从1956年就开始被使用,该算法的基本思想是由E. J. Issac R. C. Singleton提出来. 桶排序(Bucket Sort)是迄今为止最 ...

  5. 常用排序算法(八)桶排序

    桶排序 概要 本章介绍排序算法中的桶排序.内容包括: 1. 桶排序介绍 2. 桶排序图文说明 3. 桶排序实现 3.1  桶排序C实现 3.2  桶排序C++实现 3.3  桶排序Java实现 转载请 ...

  6. 排序算法java 简书_史上最全经典排序算法总结(Java实现)

    查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中.因为其实现代码较短,应用较常见.所以在面试中经常会问到排序算法及其相关的问题.但万变不离其宗,只要熟悉了思想,灵活运用也不是难事.一般在 ...

  7. 桶排序(BucketSort)(java)

    一.原理 桶排序的工作原理是吧区间划分为n个大小相同的子区间,这样的区间称为桶.然后将n个输入的数分步到各个桶中去.每个桶再个别的排序,然后按照次序吧各个桶 中的元素列出来即可. 二.时间复杂度 桶排 ...

  8. Java基础知识强化51:经典排序之桶排序(BucketSort)

    1. 首先说明三点: (1)桶排序是稳定的 (2)桶排序是常见排序里最快的一种,比快排还要快-大多数情况下 (3)桶排序非常快,但是同时也非常耗空间,基本上是最耗空间的一种排序算法 2. 桶排序的分析 ...

  9. 桶排序算法(基于Java实现)

    title: 桶排序算法(基于Java实现) tags: 桶排序算法 桶排序算法的原理和代码实现 一.桶排序算法的原理 桶排序,顾名思义,会用到"桶",核心思想是将要排序的数据分到 ...

最新文章

  1. 201671010128 2017-11-12《Java程序设计》之图形程序设计
  2. 1 图片channels_【深度学习】卷积神经网络图片分类案例(pytorch实现)
  3. TextWatcher() 的用法
  4. mysql alter table_mysql alter table 修改表命令详细介绍
  5. 数据结构之哈夫曼编码
  6. selenium+webdriver+java(基本小例子及初始化三种浏览器)---------------
  7. 使用ZbarSDK实现扫描二维码以及条形码功能(iOS)
  8. html转换成avi,HTML_视频转换大师WinMPG Video Convert 6.63,支持格式丰富,可快速完成AVI(RM - phpStudy...
  9. 梯形法则 matlab代码,matlab第二章常微分方程的数值解法
  10. 使用好压(HaoZip)软件打包EverEdit制作安装程序
  11. Exchange Server 2016 CU22升级更新
  12. 计算机桌面体验,如何安装win10的桌面体验功能?
  13. 常用Java工具类:java抽奖码生成
  14. 请注意!新办理的电话卡,有以下情况会导致“二次实名”!
  15. 三层交换机与单臂路由的优缺点
  16. 拉普拉斯金字塔图像融合原理
  17. 在hbuilder制作APP时使用echarts:堆叠柱状图
  18. 译文: C28x Compiler Error and Warning Messages
  19. 转载-工业界视频理解解决方案大汇总(人工智能前沿讲习)
  20. 点心云pcdn跑不起来解决办法(不起量)

热门文章

  1. win11更新软件商店
  2. 转)计算机领域的顶级会议和期刊
  3. Python+Vue计算机毕业设计美食网站设计与实现62e76(源码+程序+LW+部署)
  4. You have not agreed to the Xcode license.
  5. 十进制转化为二进制(栈算法)
  6. 互联网架构设计 (高并发高可用性)
  7. 文献阅读:SimCSE:Simple Contrastive Learning of Sentence Embeddings
  8. IDEA springboot启动报错java.lang.UnsatisfiedLinkError: no tcnative-1 in java.library.path
  9. 如何看懂html和css,怎么能看懂css
  10. 05 pyecharts 基本图表(示例代码+效果图)