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月前
|
Linux API iOS开发
新手喂饭教程:OpenClaw(Clawdbot)部署(无影云电脑+MacOS/Linux/Windows)+百炼API+Skills集成指南
OpenClaw(原名Clawdbot、Moltbot)作为开源AI智能体接入框架,凭借“自然语言交互+模块化技能扩展+多平台适配”的核心优势,成为2026年新手入门AI自动化工具的首选。其核心价值在于无需复杂编程,仅通过口语化指令,即可调用2868个各类技能(覆盖办公、开发、调研等32个分类),实现文档处理、网页抓取、任务自动化等重复性工作,适配个人办公、轻量开发等多种场景。
768 3
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
从“能回消息”到“能解难题”——AI客服的下一站
本文揭示AI客服正经历从“能回消息”到“能解难题”的范式跃迁:2026年AI Agent已具备感知、决策、执行能力,可自主完成退款、换货等闭环任务,而非仅转接人工。依托大模型+行业小模型+业务引擎架构,真正实现“把事办完”,推动客服从问答工具升级为数字员工。
203 0
|
3月前
|
存储 缓存 监控
更快、更稳、更省:揭秘阿里云 Elasticsearch 存算分离与弹性扩缩
从存算一体到存算分离,Elasticsearch 如何做到变更更快、迁移更稳、资源更省?本文解析阿里云 Elasticsearch 的存算分离与弹性架构,并以一个综合成本下降约 35% 的真实客户案例拆解计算、存储与弹性三重降本。 关键词: 存算分离、热点预热、智能多级缓存、弹性扩缩、三重降本
271 0
|
6月前
|
人工智能 安全 API
企业为什么开始同时关心模型和工具调用能力
企业大模型落地,不能只比模型性能。MCP标准协议与统一接入层,让AI安全、稳定、可审计地连接CRM、数据库等业务系统;分层治理(模型/工具/治理)+可控落地路径,才是从Demo走向生产的关键。
217 6
|
5月前
|
SQL 关系型数据库 MySQL
【MySQL百日打怪升级第11天】 子查询的坑与优化方案:子查询 vs JOIN
本文是MySQL系列第11讲,深度剖析子查询常见陷阱与优化方案:详解关联/非关联子查询执行差异、MySQL 5.6+ Semi-Join优化机制、NOT IN的NULL致命陷阱、标量子查询性能爆炸原理,并对比IN/JOIN/EXISTS适用场景。干货满满,直击面试高频考点。(239字)
372 0
|
供应链 监控 安全
1688商品详情API接口实战指南:合规获取数据,驱动B2B业务增长
1688商品详情API(alibaba.product.get)是合规获取B2B商品数据的核心工具,支持全维度信息调用,助力企业实现智能选品、供应链优化与市场洞察,推动数字化转型。
|
机器学习/深度学习 存储 算法
动态规划算法深度解析:0-1背包问题
0-1背包问题是经典的组合优化问题,目标是在给定物品重量和价值及背包容量限制下,选取物品使得总价值最大化且每个物品仅能被选一次。该问题通常采用动态规划方法解决,通过构建二维状态表dp[i][j]记录前i个物品在容量j时的最大价值,利用状态转移方程避免重复计算子问题,从而高效求解最优解。
1116 1
|
12月前
|
算法 数据可视化 数据挖掘
空间转录组: Visium CRC 数据集分析
空间转录组: Visium CRC 数据集分析
1011 42
空间转录组: Visium CRC 数据集分析
|
JSON API 数据安全/隐私保护
天猫商品详情API 数据解析(附代码)
天猫商品详情API(tmall.item_get)通过商品ID获取标题、价格、库存、图片、SKU等信息,支持高并发,适用于电商数据分析与价格策略优化。接口采用HTTP请求与JSON返回,需AppKey+签名认证。附Python请求示例,含签名验证与异常处理。前往体验:c0b.cc/R4rbK2
|
数据采集 缓存 监控
爬虫代理IP突然失效的应急处理指南
在爬虫开发中,代理IP是绕过反爬机制的重要工具,但其失效可能导致采集中断甚至IP封禁。本文结合实际场景,总结了代理IP失效时的应急处理方案,包括快速切换备用代理池、调整请求策略、启用本地缓存等,并提出了长期稳定策略,如IP质量监控、选择优质服务商、多协议支持与混合IP使用,帮助开发者构建高效稳定的爬虫系统。
387 0