java实现桶排序

简介: java实现桶排序

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

public class BucketSort {
public static void bucketSort(int[] array, int bucketSize) {
if (array.length <= 1) {
return;
}

    // 找到最大值和最小值
    int minValue = array[0];
    int maxValue = array[0];
    for (int i = 1; i < array.length; i++) {
        if (array[i] < minValue) {
            minValue = array[i];
        } else if (array[i] > maxValue) {
            maxValue = array[i];
        }
    }

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

    // 将元素分配到桶中
    for (int i = 0; i < array.length; i++) {
        int bucketIndex = (array[i] - minValue) / bucketSize;
        buckets.get(bucketIndex).add(array[i]);
    }

    // 对每个桶内的元素进行排序
    int currentIndex = 0;
    for (int i = 0; i < bucketCount; i++) {
        ArrayList<Integer> bucket = buckets.get(i);
        Collections.sort(bucket);
        for (int j = 0; j < bucket.size(); j++) {
            array[currentIndex++] = bucket.get(j);
        }
    }
}

public static void main(String[] args) {
    int[] array = {29, 25, 3, 49, 9, 37, 21, 43};
    int bucketSize = 10;

    System.out.println("原始数组:");
    printArray(array);

    bucketSort(array, bucketSize);

    System.out.println("排序后数组:");
    printArray(array);
}

private static void printArray(int[] array) {
    for (int i : array) {
        System.out.print(i + " ");
    }
    System.out.println();
}

}

目录
相关文章
|
7月前
|
Java
java实现归并排序
java实现归并排序
54 0
|
7月前
|
搜索推荐 算法 Java
Java实现的常用八种排序算法
提到数据结构与算法,无法避免的一点就包含排序,熟练的掌握各种排序算法则是一个程序员必备的素质之一,除此之外,排序算法也是当下各大技术公司比较喜欢问的技术点,所以,就这一点JavaBuild整理了常见的8种排序算法
39 0
|
7月前
|
搜索推荐 算法 Java
Java实现快速排序
Java实现快速排序
37 0
|
算法 Java
java实现基数排序
java实现基数排序
49 0
|
存储 搜索推荐 算法
Java实现常见排序算法(二)
Java实现常见排序算法(二)
94 0
|
移动开发 算法 搜索推荐
Java实现常见排序算法(一)
Java实现常见排序算法(一)
85 0
|
Java
Java实现基数排序
Java实现基数排序
121 0
Java实现基数排序
|
Java
Java实现归并排序
Java实现归并排序
123 0
Java实现归并排序
|
Java
Java实现插入排序
Java实现插入排序
96 0
Java实现插入排序