当前位置: 首页 > news >正文

使用Java实现桶排序算法

文章目录

    • 桶排序算法

今天来看看桶排序算法:

桶排序算法

(1)基本思想:把数组 arr 划分为 n 个大小相同子区间(桶),每个子区间各自排序,最后合并 。计数排序是桶排序的一种特殊情况,可以把计数排序当成每个桶里只有一个元素的情况。

(2)排序过程

  • 找出待排序数组中的最大值 max、最小值 min
  • 我们使用 动态数组 ArrayList 作为桶,桶里放的元素也用 ArrayList 存储。桶的数量为(maxmin)/arr.length+1
  • 遍历数组 arr,计算每个元素 arr[i] 放的桶
  • 每个桶各自排序

示例代码:

/*** 桶排序** @param data 待排序数组*/
public static void bucketSort(int data[]){int n = data.length;int bask[][] = new int[10][n];int index[] = new int[10];int max = Integer.MIN_VALUE;for (int i = 0; i < n; i++) {max = max > (Integer.toString(data[i]).length()) ? max : (Integer.toString(data[i]).length());}String str;for (int i = max - 1; i >= 0; i--) {for (int j = 0; j < n; j++) {str = "";if (Integer.toString(data[j]).length() < max) {for (int k = 0; k < max - Integer.toString(data[j]).length(); k++)str += "0";}str += Integer.toString(data[j]);bask[str.charAt(i) - '0'][index[str.charAt(i) - '0']++] = data[j];}int pos = 0;for (int j = 0; j < 10; j++) {for (int k = 0; k < index[j]; k++) {data[pos++] = bask[j][k];}}for (int x = 0; x < 10; x++) index[x] = 0;}
}
http://www.lryc.cn/news/257112.html

相关文章:

  • 5.题目:编号1624 小蓝吃糖果
  • 基于SpringBoot+thymeleaf协同过滤算法山河旅游推荐系统(Java毕业设计)
  • TypeScript 之 console的使用
  • 西南科技大学C++程序设计实验十(函数模板与类模板)
  • Python 解析JSON实现主机管理
  • 一体化污水处理设备材质怎么选
  • 德国进口高速主轴电机在机器人上的应用及选型方案
  • 【软考中级——软件设计师】备战经验 笔记总结分享
  • 146. LRU 缓存 --力扣 --JAVA
  • 【C++】POCO学习总结(十):Poco::Util::Application(应用程序框架)
  • 探索医学影像:如何通过ROI灰度直方图和ROI区域方格图揭示隐秘细节?
  • SASS基本语法总结
  • 【C++】简单工厂模式
  • el-tree数据量过大,造成浏览器卡死、崩溃
  • 2024 年甘肃省职业院校技能大赛中职组 电子与信息类“网络安全”赛项竞赛样题-A
  • 面向LLM的App架构——业务维度
  • ElasticSearch之cat plugins API
  • 【小米电脑管家】安装使用教程--非小米电脑
  • 视频讲解|基于多目标粒子群算法的配电网储能选址定容
  • Android 13 - Media框架(22)- MediaCodec(三)
  • git提交报错 fatal: LF would be replaced by CRLF in package-lock.json
  • 卷积详解和并行卷积
  • c#生成二维码二维码中间添加定制LoGo
  • 设计CPU功能的数字电路
  • 在windows下编译libiconv库
  • html,css,开发知识,调试知识
  • Vulnerability: File Upload(Medium)--MYSQL注入
  • 短视频账号剪辑矩阵+无人直播系统源头开发
  • Python traceback模块:获取异常信息
  • 单点登录方案调研与实现