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

算法之桶排序算法

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

1.找出待排序数组中的最大值 max、最小值 min

2.使用 动态数组 ArrayList 作为桶,桶里放的元素也用 ArrayList 存储。桶的数量为(maxmin)/arr.length+1

3.遍历数组 arr,计算每个元素 arr[i] 放的桶

4.每个桶各自排序

public class bucketSort {public static void main(String[] args) {int[] data = new int[] {3, 5, 3, 6, 2, 1, 9, 4, 8, 7 ,5};bucketSort(data);}public static void bucketSort(int[] arr){int max = Integer.MIN_VALUE;int min = Integer.MAX_VALUE;for(int i = 0; i < arr.length; i++){max = Math.max(max, arr[i]);min = Math.min(min, arr[i]);}//创建桶int bucketNum = (max - min) / arr.length + 1;ArrayList<ArrayList<Integer>> bucketArr = new ArrayList<>(bucketNum);for(int i = 0; i < bucketNum; i++){bucketArr.add(new ArrayList<>());}//将每个元素放入桶for(int i = 0; i < arr.length; i++){int num = (arr[i] - min) / (arr.length);bucketArr.get(num).add(arr[i]);}//对每个桶进行排序for(int i = 0; i < bucketArr.size(); i++){Collections.sort(bucketArr.get(i));}System.out.println(bucketArr.get(0));}

 

http://www.lryc.cn/news/97069.html

相关文章:

  • 读kafka生产端源码,窥kafka设计之道(下)
  • Pytorch个人学习记录总结 06
  • Rust之泛型、特性和生命期(四):验证有生存期的引用
  • kubesphere安装中间件
  • zookeeper学习(二) 集群模式安装
  • 选择合适的图表,高效展现数据魅力
  • springboot自动装配
  • python小记-队列
  • SpringBoot——持久化技术
  • Kafka 入门到起飞 - 生产者参数详解 ,什么是生产者确认机制? 什么是ISR? 什么是 OSR?
  • 【文献分享】比目前最先进的模型轻30%!高效多机器人SLAM蒸馏描述符!
  • 【数据动态填充到element表格;将带有标签的数据展示为文本格式】
  • 小程序轮播图的两种后台方式(PHP)--【浅入深出系列008】
  • 使用ComPDFKit PDF SDK 构建iOS PDF阅读器
  • 一套流程6个步骤,教你如何正确采购询价
  • git使用
  • SkyWalking链路追踪-搭建-spring-boot-cloud-单机环境 之《10 分钟快速搭建 SkyWalking 服务》
  • Rabbit MQ整合springBoot
  • Golang 中的 time 包详解(一):time.Time
  • CMU 15-445 -- Database Recovery - 18
  • HTTP Header定制,客户端使用Request,服务器端使用Response
  • Vue 3编写的父子组件示例,包括传递数据和调用父组件方法
  • [ 容器 ] Docker 的数据管理
  • 【环境配置】使用Docker搭建LAMP环境
  • MLIR (Multi-Level Intermediate Representation)
  • VR全景在酒店的发展状况如何?酒店该如何做营销?
  • Winform使用PictureBox控件显示图片并且自适应
  • HTML中的焦点管理
  • 如何区分接口测试和功能测试
  • limit分页查询