使用Java写一个桶排序
时间: 2024-05-11 15:14:22 浏览: 62
用Java实现桶排序
5星 · 资源好评率100%
以下是使用Java实现的桶排序代码:
```java
import java.util.ArrayList;
import java.util.Collections;
public class BucketSort {
public static void sort(int[] arr, int bucketSize) {
if (arr.length == 0) {
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 bucketCount = (maxValue - minValue) / bucketSize + 1;
ArrayList<ArrayList<Integer>> buckets = new ArrayList<>(bucketCount);
for (int i = 0; i < bucketCount; i++) {
buckets.add(new ArrayList<>());
}
for (int i = 0; i < arr.length; i++) {
buckets.get((arr[i] - minValue) / bucketSize).add(arr[i]);
}
int currentIndex = 0;
for (int i = 0; i < bucketCount; i++) {
ArrayList<Integer> bucket = buckets.get(i);
Collections.sort(bucket);
for (int j = 0; j < bucket.size(); j++) {
arr[currentIndex++] = bucket.get(j);
}
}
}
public static void main(String[] args) {
int[] arr = {5, 2, 9, 1, 5, 6, 8, 10, 3, 7};
sort(arr, 2);
for (int i : arr) {
System.out.print(i + " ");
}
}
}
```
在这个实现中,我们首先找到数组中的最小值和最大值,然后根据桶的大小计算出需要的桶的数量。我们创建一个包含所有桶的ArrayList,然后遍历数组,将每个元素放入对应的桶中。最后,我们对每个桶进行排序,然后将它们的元素依次放回原始数组中。
阅读全文