Java实现桶排序
public class BucketSort {
public static void main(String[] args) {
int[] list = {1000, 192, 221, 12, 23};
print(list);
System.out.println();
bucketSort(list, 10, 4);
print(list);
}
//list:待排序数组 radix关键字取值范围 d一个数最多包含的关键字
public static void bucketSort(int[] list, int radix, int d){
int[] temp = new int[list.length];
//定义桶的数量
int[] buckets = new int[radix];
for(int i=0, rate=1;i<d;i++){
//清空buckets进行下一轮计数
Arrays.fill(buckets, 0);
//将当前数组复制给临时数组便于操作
System.arraycopy(list, 0, temp, 0, list.length);
//开始判断入桶
for(int j=0;j<temp.length;j++){
int index = (temp[j]/rate)%radix;
buckets[index]++;
}
//为元素的取出做准备
for(int k=1;k<radix;k++){
buckets[k] = buckets[k]+buckets[k-1];
}
//通过上述循环 就可以知道当前要插入的元素子数组中应该排第几
for(int r=temp.length-1;r>=0;r--){
int radex = (temp[r]/rate)%radix;
list[--buckets[radex]] = temp[r];
}
//准备排序十位
rate *= radix;
}
}
//打印数组
public static void print(int[] list){
for(int num:list)
System.out.print(num+" ");
}
}
Java实现桶排序的更多相关文章
- Java实现桶排序和基数排序
桶排序代码: import java.util.Arrays; /** * 桶排序 * 工作的原理是将数组分到有限数量的桶里 * 每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序 ...
- java,桶排序,冒泡排序,快速排序
1.桶排序: 百度百科:桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里.每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排 ...
- Java算法 -- 桶排序
桶排序(Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里.每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序).桶排序是鸽巢排序 ...
- Java排序算法——桶排序
文字部分为转载:http://hxraid.iteye.com/blog/647759 对N个关键字进行桶排序的时间复杂度分为两个部分: (1) 循环计算每个关键字的桶映射函数,这个时间复杂度是O(N ...
- Java基础知识强化51:经典排序之桶排序(BucketSort)
1. 首先说明三点: (1)桶排序是稳定的 (2)桶排序是常见排序里最快的一种,比快排还要快…大多数情况下 (3)桶排序非常快,但是同时也非常耗空间,基本上是最耗空间的一种排序算法 2. 桶排序的分析 ...
- 排序基础之非比较的计数排序、桶排序、基数排序(Java实现)
转载请注明原文地址: http://www.cnblogs.com/ygj0930/p/6639353.html 比较和非比较排序 快速排序.归并排序.堆排序.冒泡排序等比较排序,每个数都必须和其他 ...
- 排序算法-桶排序(Java)
package com.rao.sort; import java.util.*; /** * @author Srao * @className BucketSort * @date 2019/12 ...
- 计数排序和桶排序(Java实现)
目录 比较和非比较的区别 计数排序 计数排序适用数据范围 过程分析 桶排序 网络流传桶排序算法勘误 桶排序适用数据范围 过程分析 比较和非比较的区别 常见的快速排序.归并排序.堆排序.冒泡排序等属于比 ...
- 桶排序与基数排序代码(JAVA)
桶排序 publicstaticvoid bucketSort(int[] a,int max){ int[] buckets; if(a==null || m ...
随机推荐
- NPOI之C#下载Excel
Java中这个类库叫POI,C#中叫NPOI,很多从Java一直到.Net平台的类库为了区别大部分都是在前面加个N,比如Hibernate和NHibernate. npoi下载地址 一.使用NPOI下 ...
- Apache同一个IP上配置多域名
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin webmaster@yourdomain.com DocumentRoot &quo ...
- java中json解析,xml解析
抓取网页内容,会返回json或者xml(html)格式的数据. 为了方便的对上述两种格式的数据进行解析,可采用解析工具. JsonPath https://github.com/jayway/Json ...
- Csharp:TinyMCE HTML Editor in .NET WindowsForms
/// <summary> /// /// </summary> public partial class Form2 : Form { private mshtml.IHTM ...
- java位运算之简单了解
1.十进制转化为二进制 将正整数转化为二进制的方法“除2取余,逆序排列”. 2.二进制转化为十进制 表示整数的二进制,第一位为标志位,0代表为正整数,位数从右开始,第一个位数为0,各位位数记作n,取各 ...
- easyui datagrid 本地json数据 实现删除
html代码:<a href='javascript:void(0);' onclick='Delete(\""+ index +"\")' class= ...
- ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
在前面的创建专辑与编辑专辑的表单中存在一个问题:我们没有进行任何验证.字段的内容可以不输入,或者在价格的字段中输入一些字符,在执行程序的时候,这些错误会导致数据库保存过程中出现错误,我们将会看到来自数 ...
- 【Linux】应用程序内存段布局
一.各段内存布局 内存布局图 1.BSS段(Block Started by Symbol)未初始化段 2.linux ELF base address is 0x8048000 应用程序虚拟地址起始 ...
- Redis安装及配置
Redis缓存数据库 借鉴出处 http://www.runoob.com/redis/redis-install.html http://www.runoob.com/redis/redis-con ...
- XPS 13 9360安装ubuntu 18
XPS 13 9360安装ubuntu 18 标签(空格分隔): Linux 操作系统 1. 雷电口驱动bug 提示更新雷电口驱动bug(thunderbolt nvm for xps noteboo ...