/**
* 桶排序
*/
public class BucketSort {
public static void main(String[] args) {
int[] array = {23,14,47,71,32};
int digit = digit(array);
bucketSort(array, 0, array.length - 1, digit);
for (int i : array) {
System.out.println(i);
}
}
//计算最大数有几位,就是计算需要进出桶几次
public static int digit(int[] array){
int max = Integer.MIN_VALUE;
for (int i = 0; i < array.length; i++) {
max = Math.max(array[i], max);
}
int result = 0;
while (max != 0){
result++;
max /= 10;
}
return result;
}
public static void bucketSort(int[] array, int L, int R, int digit){
final int radix = 10; //词频表范围
int i = 0, j = 0;
int[] bucket = new int[R - L + 1]; //辅助数组
for (int d = 1; d <= digit; d++){ //进出桶的次数
int[] count = new int[radix];
for (i = L; i <= R; i++) {
j = getDigit(array[i], d);
count[j]++;
}
for (i = 1; i < radix; i++) { //计算词频表
count[i] = count[i] + count[i - 1];
}
for (i = R; i >= L; i--){
j = getDigit(array[i], d);
bucket[count[j] - 1] = array[i];
count[j]--;
}
for (i = L, j = 0; i <= R; i++, j++) {
array[i] = bucket[j];
}
}
}
public static int getDigit(int x, int d){
return (x / (int)Math.pow(10, d - 1) % 10);
}
}
桶排序
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:Java递归与基础复习
下一篇:switch
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
排序算法之计数排序的优化
排序算法之计数排序的优化
数组 计数排序 最小值 -
107,排序-桶排序
桶排序是将数组分散到有限的桶中,然后每个桶再分别排序,而每个桶的排序又可以使用其他排序方式进行排序,可以是桶
数组 桶排序 最小值 数据 计数排序 -
桶排序算法
// 桶排序const bucketSort = (array, bucketSize) => { if (array.length === 0
elementui java 排序算法 i++ 桶排序 -
简单桶排序
【代码】简单桶排序。
算法 数据结构 c++ 数组 i++