桶排序(Bucket Sort)是一种排序算法,它将输入数据分割成若干个桶(区间范围),然后对每个桶中的数据进行排序,最后将各个桶中的数据合并起来。以下是一个桶排序的Java代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List;
public class BucketSort {
public static void bucketSort(double[] arr) { int n = arr.length; List<Double>[] buckets = new ArrayList[n];
for (int i = 0; i < n; i++) { buckets[i] = new ArrayList<>(); }
for (int i = 0; i < n; i++) { int bucketIndex = (int) (n * arr[i]); buckets[bucketIndex].add(arr[i]); }
for (int i = 0; i < n; i++) { Collections.sort(buckets[i]); }
int index = 0; for (int i = 0; i < n; i++) { for (double value : buckets[i]) { arr[index++] = value; } } }
public static void main(String[] args) { double[] arr = {0.42, 0.32, 0.33, 0.52, 0.37, 0.47, 0.51}; System.out.println("Original array: " + Arrays.toString(arr));
bucketSort(arr);
System.out.println("Sorted array: " + Arrays.toString(arr)); } }
|
在这个示例中,bucketSort
方法使用桶排序算法对一个小数数组进行排序。它首先将元素按照一定的规则放入不同的桶中,然后对每个桶中的元素进行排序,最后将排序后的桶合并成一个有序数组。
注意,这个示例中的桶排序适用于小数排序,每个桶内部使用了简单的插入排序。实际应用中,桶的数量和分桶规则的选择会影响算法的性能。