基于LinkedList实现桶排序
2023-03-14 09:44:55 时间
需要考虑以下问题:
1、桶的大小,这里我们可以根据输入的元素的个数来确定桶的大小。
2、怎么样确定当前元素进入哪一个桶,这里我们使用到的是通过一个哈希函数来进行计算。
int index = (element * length) / (max + 1); element为当前元素的值,length为桶的大小,max为数组中最大元素的值
3、因为输入的数据是随机的,所以有可能在一个桶中分布着好几个数据,那么怎么样维持在一个桶中的顺序呢?因为涉及到桶中元素的数量的不确定性,所以我们可以使用动态的数据结构来存储,可以用ArrayList或者LinkedList,考虑到插入的操作是比较频繁的,所以这里我们使用链表来进行插入元素,并且在一个桶中维持从小到大的顺序。在一开始的时候我们扫描桶的元素,找到第一个比当前需要插入的元素大或者相等的的元素,那么将这个元素往前插入就可以了。
具体的代码在以前的博客中已经粘出:https://www.cnblogs.com/xiaoyh/p/10283863.html
总结:
像这种题目要使用原生的Java ListApi的话就不太好使,还不如自己定义一个链表来实现这些功能,所以我们学习数据结构并不是去学习如何去使用这些Java封装好的API,而是自己去实现这些数据结构,灵活运用自己定义的数据结构来解决题目,灵活地根据题目的需求去改造数据结构,让它适用于要解决的题目。我们学习数据结构的目的呢就是学习这些经典数据结构的思想,比如先进先出,先进后出这些。然后利用这些来更方便,更省时的解决题目。
相关文章
- 多伦多儿童医院的脑机接口实验正在进行
- 布朗大学研究者提出的下一代脑机接口系统是什么样的?
- 北理工团队在基于非侵入式神经信号的连续运动解码方面取得新进展
- 什么是极速文件传输,极速文件传输如何进行大文件传输
- 【低代码】1570- 9个顶级无代码开发工具
- 迈迪克,一家专注生命科学领域自动化的平台型企业
- 北理工团队创建面向多任务操控的脑机协同控制方法并应用于智能车辆
- EasyDSS私有化部署:如何有效整合服务器带宽与性能资源实现高并发?
- 终于有人把AB实验讲明白了
- 聊聊这个SaaS领域爆火的话题
- 终于有人把分布式机器学习讲明白了
- 为什么我不建议自研BI系统?
- CMU研究人员开创CMU阵列,3D打印且完全可定制的脑机接口微电极阵列
- 揭秘短视频推荐系统的技术架构及四大模块
- 什么是一网统管?终于有人讲明白了
- [oeasy]python0082_VT100_演化_颜色设置_VT选项_基础色_高亮色_索引色_RGB总结
- 设备管理系统——企业设备管理的利器
- 数据、算法、场景:工程化的“三驾马车”
- 什么是AB实验?能解决什么问题?终于有人讲明白了
- Roblox、Epic Games和Meta,详解三巨头如何引爆元宇宙