用java写一个桶排序
时间: 2024-05-15 12:13:57 浏览: 113
桶排序是一种线性排序算法,它的基本思想是将待排序的数据分到有限数量的桶中,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。以下是用 Java 实现桶排序的代码:
```java
public static void bucketSort(int[] arr, int bucketSize) {
if (arr.length == 0) {
return;
}
// 找到最大值和最小值
int minValue = arr[0];
int maxValue = arr[0];
for (int value : arr) {
if (value < minValue) {
minValue = value;
} else if (value > maxValue) {
maxValue = value;
}
}
// 初始化桶
int bucketCount = (maxValue - minValue) / bucketSize + 1;
List<List<Integer>> buckets = new ArrayList<>(bucketCount);
for (int i = 0; i < bucketCount; i++) {
buckets.add(new ArrayList<>());
}
// 将数据放入桶中
for (int value : arr) {
int bucketIndex = (value - minValue) / bucketSize;
buckets.get(bucketIndex).add(value);
}
// 对每个桶进行排序
int currentIndex = 0;
for (int i = 0; i < bucketCount; i++) {
List<Integer> bucket = buckets.get(i);
Collections.sort(bucket);
for (int value : bucket) {
arr[currentIndex++] = value;
}
}
}
```
在上述代码中,我们首先找到待排序数组中的最大值和最小值,然后初始化桶,将数据放入桶中,对每个桶进行排序,最后将各个桶中的数据按顺序合并起来。
阅读全文