用java写一个桶排序的函数,传入参数有int[]和桶的数量,输出为void
时间: 2024-04-12 07:27:45 浏览: 104
用Java实现桶排序
5星 · 资源好评率100%
好的,下面是一个用Java编写的桶排序函数:
```java
public static void bucketSort(int[] arr, int bucketCount) {
if (arr == null || arr.length <= 1) {
return;
}
// 找到数组中的最大值和最小值
int minValue = arr[0];
int maxValue = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] < minValue) {
minValue = arr[i];
} else if (arr[i] > maxValue) {
maxValue = arr[i];
}
}
// 计算桶的大小
int bucketSize = (maxValue - minValue) / bucketCount + 1;
// 创建桶并将元素放入桶中
ArrayList<Integer>[] buckets = new ArrayList[bucketCount];
for (int i = 0; i < bucketCount; i++) {
buckets[i] = new ArrayList<Integer>();
}
for (int i = 0; i < arr.length; i++) {
int bucketIndex = (arr[i] - minValue) / bucketSize;
buckets[bucketIndex].add(arr[i]);
}
// 对每个桶进行排序,并将元素放回原数组
int currentIndex = 0;
for (int i = 0; i < bucketCount; i++) {
Collections.sort(buckets[i]);
for (int j = 0; j < buckets[i].size(); j++) {
arr[currentIndex++] = buckets[i].get(j);
}
}
}
```
这个函数使用桶排序算法对传入的整数数组进行排序,其中`arr`是待排序的数组,`bucketCount`是桶的数量。函数会直接修改原始数组,排序结果将保存在原数组中。请确保传入的参数合法有效。
阅读全文