下面是用Java编写的桶排序逻辑:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class BucketSort {

    public static void bucketSort(int[] arr) {
        int n = arr.length;
        if (n <= 1) {
            return;
        }

        // 找到数组中的最大值和最小值
        int minVal = arr[0];
        int maxVal = arr[0];
        for (int i = 1; i < n; i++) {
            if (arr[i] < minVal) {
                minVal = arr[i];
            } else if (arr[i] > maxVal) {
                maxVal = arr[i];
            }
        }

        // 计算桶的数量
        int bucketCount = (maxVal - minVal) / n + 1;
        ArrayList<ArrayList<Integer>> buckets = new ArrayList<>(bucketCount);
        for (int i = 0; i < bucketCount; i++) {
            buckets.add(new ArrayList<>());
        }

        // 将元素放入桶中
        for (int i = 0; i < n; i++) {
            int index = (arr[i] - minVal) / n;
            buckets.get(index).add(arr[i]);
        }

        // 对每个桶进行排序
        for (int i = 0; i < bucketCount; i++) {
            Collections.sort(buckets.get(i));
        }

        // 将桶中的元素依次取出放回原数组
        int index = 0;
        for (int i = 0; i < bucketCount; i++) {
            int size = buckets.get(i).size();
            for (int j = 0; j < size; j++) {
                arr[index++] = buckets.get(i).get(j);
            }
        }
    }

    public static void main(String[] args) {
        int[] arr = {29, 10, 14, 37, 13};
        bucketSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

运行以上代码,输出为:[10, 13, 14, 29, 37]。

给我用java写一个桶排序逻辑

原文地址: https://www.cveoy.top/t/topic/i2hQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录