ToB企服应用市场:ToB评测及商务社交产业平台

标题: 排序算法之桶排序详细解读(附带Java代码解读) [打印本页]

作者: 圆咕噜咕噜    时间: 2024-9-4 08:19
标题: 排序算法之桶排序详细解读(附带Java代码解读)
桶排序(Bucket Sort)是一种基于分布的排序算法,它通过将待排序的数据分配到若干个桶(即子区间)中,然后对每个桶内的元素进行排序,最后将各个桶中的元素合并以得到最终的排序效果。桶排序适用于匀称分布的数据,对于特定的数据集可以达到线性时间复杂度。
算法思想

桶排序的根本思想是:
过程示例

假设有一个待排序的数组:[0.78, 0.17, 0.39, 0.26, 0.72, 0.94, 0.21, 0.12]
步调 1: 分桶

步调 2: 排序桶内元素

步调 3: 合并桶

算法复杂度


优点

缺点

Java代码解读

  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.List;
  4. public class BucketSort {
  5.     // 主方法:执行桶排序
  6.     public static void bucketSort(float[] arr) {
  7.         int n = arr.length;
  8.         // 1. 创建桶
  9.         if (n <= 0) return;
  10.         List<Float>[] buckets = new ArrayList[n];
  11.         for (int i = 0; i < n; i++) {
  12.             buckets[i] = new ArrayList<>();
  13.         }
  14.         // 2. 将元素分配到桶中
  15.         for (float num : arr) {
  16.             int index = (int) (num * n); // 桶的索引
  17.             buckets[index].add(num);
  18.         }
  19.         // 3. 对每个桶内的元素进行排序
  20.         for (int i = 0; i < n; i++) {
  21.             Collections.sort(buckets[i]);
  22.         }
  23.         // 4. 合并所有桶中的元素
  24.         int index = 0;
  25.         for (int i = 0; i < n; i++) {
  26.             for (float num : buckets[i]) {
  27.                 arr[index++] = num;
  28.             }
  29.         }
  30.     }
  31.     public static void main(String[] args) {
  32.         float[] arr = {0.78f, 0.17f, 0.39f, 0.26f, 0.72f, 0.94f, 0.21f, 0.12f};
  33.         System.out.println("排序前的数组:");
  34.         for (float num : arr) {
  35.             System.out.print(num + " ");
  36.         }
  37.         System.out.println();
  38.         bucketSort(arr);
  39.         System.out.println("排序后的数组:");
  40.         for (float num : arr) {
  41.             System.out.print(num + " ");
  42.         }
  43.     }
  44. }
复制代码
代码分析


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4