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();
}

}

目录
相关文章
|
应用服务中间件 Linux PHP
Linux搭建tengine2.0<Nginx>+php7环境
本文介绍了在Linux系统上搭建Tengine 2.0(一个Nginx的增强版本)和PHP 7环境的详细步骤,包括创建安装目录、下载源码包及依赖库、编译安装Nginx、配置Nginx、安装PHP及其依赖、设置PHP-FPM、配置环境变量、安装Git和Composer,以及服务管理和日志查看等。
190 0
|
数据采集 存储 缓存
K8S采集专题-稳定性:iLogtail容器重启数据可靠性探讨
容器场景下iLogtail容器的稳定性对于日志采集的可靠性尤为重要,特别是对于容器重启的情况需要通过特定的配置确保采集状态可恢复。本文简要讲解了iLogtail的状态持久化原理和容器场景状态持久化方案,并详细描述了在K8S和Docker环境下如何配置iLogtail参数和容器参数来解决这种情况下的数据采集的稳定性问题。
|
前端开发 JavaScript 搜索推荐
JavaScript工具函数汇总
JavaScript工具函数汇总
|
Cloud Native Linux Apache
生态建设对开源项目的重要性 | Apache APISIX Summit Asia 2022 圆桌回顾
2022 年 5 月 21 日,Apache APISIX Summit ASIA 2022 开启第二天的议程。围绕“生态建设对开源项目的重要性”这一主题,王晔倞(API7.ai 合伙人兼技术副总裁,Apache APISIX Committer)担任主持人,与周小四(青云科技容器事业部负责人)、王宇博(亚马逊云科技开发者关系总监)、吴晟(Tetrate 创始工程师,Apache SkyWalking 创始人)三位嘉宾展开了一场圆桌讨论,讨论话题包括:“社区、用户、开发者对于开源项目的意义”、“完善的开源生态系统对于开发者和用户的意义”、“开源生态发展在国内大环境下的态势与挑战”。
308 0
|
程序员 数据库
一份来自28岁老程序员的自白
作者:依乐祝原文链接:https://www.cnblogs.com/yilezhu/p/9966945.html 写在前面 很幸运,28岁的我头发还没有掉光,更幸运的是28岁的我开始了博客园的写作生活!这样的技术分享经历让我拓展了自己的朋友圈!有幸结识了像张善友张队(连续13年的微软MVP),大石头(NewLife团队),nicye(CSRedisCore作者)等圈内大牛!真的感觉自己很幸运!最近看了很多人写自己的程序员生活,所以趁着今天出差的空隙也想给28岁的自己做个叙述!于是就有了这篇文章! 毕业实习的半年 不知道大家是否跟我一样,在大学过着虚度光阴的生活。
1763 0
|
JavaScript 前端开发
jQuery 对象和 DOM 对象
jQuery(DOM对象) 或者 $(DOM对象) 此函数的作用是将DOM对象,转换为jQuery的对象 DOM对象其实就是javascript的函数对象,可以用来操作所有HTML元素。比如: a标签是html元素,document是DOM对象 【需求】 分别定义DOM对象和jQuer...
1032 0
|
4天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!