桶排序
桶排序(Bucket Sort)是一种分布式排序算法,它将数据分到有限数量的桶中,然后对每个桶内的数据进行排序,最后将所有桶中的数据合并起来。桶排序特别适合于数据均匀分布的情况。
下面是一个简单的 Java 实现桶排序的示例代码:
import java.util.ArrayList;
import java.util.Collections;
public class BucketSort {
public static void bucketSort(float[] arr) {
// 1. 创建桶
int n = arr.length;
if (n <= 0) return;
// 创建 n 个空桶
ArrayList<Float>[] buckets = new ArrayList[n];
for (int i = 0; i < n; i++) {
buckets[i] = new ArrayList<>();
}
// 2. 将数据分配到桶中
for (float num : arr) {
int bucketIndex = (int) (num * n); // 假设数据在 [0, 1) 范围内
if (bucketIndex >= n) {
bucketIndex = n - 1; // 确保索引不越界
}
buckets[bucketIndex].add(num);
}
// 3. 对每个桶内的数据进行排序
for (ArrayList<Float> bucket : buckets) {
Collections.sort(bucket);
}
// 4. 合并所有桶中的数据
int index = 0;
for (ArrayList<Float> bucket : buckets) {
for (float num : bucket) {
arr[index++] = num;
}
}
}
public static void main(String[] args) {
float[] arr = {0.42f, 0.32f, 0.24f, 0.12f, 0.34f, 0.45f, 0.23f, 0.56f};
System.out.println("排序前: ");
for (float num : arr) {
System.out.print(num + " ");
}
bucketSort(arr);
System.out.println("\n排序后: ");
for (float num : arr) {
System.out.print(num + " ");
}
}
}
ArrayList
数组,每个 ArrayList
代表一个桶。Collections.sort()
对每个桶内的数据进行排序。希望这个解释和示例代码能帮助你理解桶排序的原理和实现!如果你有任何问题或需要进一步的解释,请随时问我。