用java写一个桶排序
时间: 2024-05-03 15:22:41 浏览: 48
Java实现桶排序算法(源代码)
以下是Java实现的桶排序代码:
```java
import java.util.Arrays;
public class BucketSort {
public static void bucketSort(int[] nums) {
int n = nums.length;
if (n <= 1) {
return;
}
// 计算桶的个数
int maxVal = nums[0];
for (int i = 1; i < n; i++) {
maxVal = Math.max(maxVal, nums[i]);
}
int bucketNum = maxVal / 10 + 1;
// 将所有元素放入桶中
int[][] buckets = new int[bucketNum][n];
int[] bucketCount = new int[bucketNum];
for (int i = 0; i < n; i++) {
int bucketIndex = nums[i] / 10;
buckets[bucketIndex][bucketCount[bucketIndex]++] = nums[i];
}
// 对每个桶进行排序
for (int i = 0; i < bucketNum; i++) {
if (bucketCount[i] > 1) {
Arrays.sort(buckets[i], 0, bucketCount[i]);
}
}
// 将所有桶的元素依次取出
int index = 0;
for (int i = 0; i < bucketNum; i++) {
for (int j = 0; j < bucketCount[i]; j++) {
nums[index++] = buckets[i][j];
}
}
}
public static void main(String[] args) {
int[] nums = {9, 2, 5, 3, 1, 7, 6, 8, 0, 4};
bucketSort(nums);
System.out.println(Arrays.toString(nums));
}
}
```
在这个实现中,我们首先计算出桶的个数,然后将所有元素放入桶中。接下来,我们对每个桶进行排序,并将所有桶中的元素依次取出,即可得到排序后的数组。在这个实现中,我们使用的是整数排序,每个桶的大小为10,所以最多会有10个元素放入同一个桶中,这样可以确保桶的大小不会过大。
阅读全文