码迷,mamicode.com
首页 > 编程语言 > 详细

基于LinkedList实现桶排序

时间:2019-02-14 11:53:08      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:题目   div   博客   功能   color   最大   开始   targe   www.   

需要考虑以下问题:

  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,而是自己去实现这些数据结构,灵活运用自己定义的数据结构来解决题目,灵活地根据题目的需求去改造数据结构,让它适用于要解决的题目。我们学习数据结构的目的呢就是学习这些经典数据结构的思想,比如先进先出,先进后出这些。然后利用这些来更方便,更省时的解决题目。

 

 

基于LinkedList实现桶排序

标签:题目   div   博客   功能   color   最大   开始   targe   www.   

原文地址:https://www.cnblogs.com/xiaoyh/p/10373573.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!