须要考虑如下问题:html
一、桶的大小,这里咱们能够根据输入的元素的个数来肯定桶的大小。数组
二、怎么样肯定当前元素进入哪个桶,这里咱们使用到的是经过一个哈希函数来进行计算。数据结构
int index = (element * length) / (max + 1); element为当前元素的值,length为桶的大小,max为数组中最大元素的值
三、由于输入的数据是随机的,因此有可能在一个桶中分布着好几个数据,那么怎么样维持在一个桶中的顺序呢?由于涉及到桶中元素的数量的不肯定性,因此咱们可使用动态的数据结构来存储,能够用ArrayList或者LinkedList,考虑到插入的操做是比较频繁的,因此这里咱们使用链表来进行插入元素,而且在一个桶中维持从小到大的顺序。在一开始的时候咱们扫描桶的元素,找到第一个比当前须要插入的元素大或者相等的的元素,那么将这个元素往前插入就能够了。函数
具体的代码在之前的博客中已经粘出:https://www.cnblogs.com/xiaoyh/p/10283863.html学习
总结:spa
像这种题目要使用原生的Java ListApi的话就不太好使,还不如本身定义一个链表来实现这些功能,因此咱们学习数据结构并非去学习如何去使用这些Java封装好的API,而是本身去实现这些数据结构,灵活运用本身定义的数据结构来解决题目,灵活地根据题目的需求去改造数据结构,让它适用于要解决的题目。咱们学习数据结构的目的呢就是学习这些经典数据结构的思想,好比先进先出,先进后出这些。而后利用这些来更方便,更省时的解决题目。code