全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
由hash结构,看数据结构优化“宗法” 俗话说:“万变不离其宗”,程序亦是如此。 无论是HashSet、HashMap、Hashtable,还是TreeSet、PriorityQueue,都不离其原则。众所周知,衡量一个程序的好坏、数据结构好坏的重要指标是其空间复杂度和时间复杂度。“鱼和熊掌不可兼得”,时间复杂度和空间复杂度也不能兼顾。比如数组,由于存储空间物理上不连续,其空间占用大;而链表,虽然占用空间较小,而且可以充分利用零散的存储空间,但它没有数组所拥有的下标,导致其时间复杂度较高。 万事万物都有其制约因素,所以也就没有完全意义上的完美,但我们可以寻求“相对的完美”。时间复杂度和空间复杂度势必有一方要被舍弃,但高速发展的社会不仅要求时间上的高效,也要求空间上的资源高效利用。看官(应该有)要问了,“那怎么办呀”? 我们聪明的老祖宗已经为我们埋下了伏笔。“中庸”的思想帮到了我们。既然各有优点,那何不有机的结合各种结构的优点,这样不就可以达到时间复杂度和空间复杂度的平衡点,也许会是黄金分割点。TreeSet就是个鲜明的例子,是tree结构和Set结构的有机结合,极大的提高了数据结构的“优雅”和“韵律”。 看到这,你也许以为,“有机结合各家所长”就是“宗”了。非也,宗者,乃假外物以为余是也。借助外力补足缺点才是王道。有机结合是通过结合利用其它结构补足自身补足。除此之外,通过适当的转换,也可以达到优化结构的目的。高中物理书中写道:“力是改变物体状态的原因”。对于IT男男女女来说,我们想要改变现有对象的状态时,添加方法就是我们的“力”。你没有下标,增加了时间复杂度。Ok,我将你跟连续的下标联系起来不就行啦!以hash结构为例,基本思想就是通过hash函数(即我们的“力”),改变原有的数据结构特点,以补不足。显然,HashSet就是用hash函数构造的Set;HashMap就是用hash函数构造的Map你若问我hash函数是什么?它是具体情况而定。 下面,以我自定义的hash结构为例。 构建一个简单的hash结构,流程如下:1、 利用hash函数得到hash值,通常为键值或下标位置。2、 将对应的属性值放入到对应键值或下标的相应位置。如选择的是键值对就放入集合内;如选择的是链表就放入节点,加在末尾如下图1。3、 因为是通过函数计算,且键值和下标的本地hashcode值通过计算可能相同,就会产生冲突,链表可以加在末尾,但随冲突的增加,链表越来越长,采用hash结构的优势越来越弱,此时就要重构hash结构。是否需要重构根据具体情况而设定的峰值而定。如下图2,为rehash后的结果。4、 于是出现了问题出现了,怎样重构更好呢?hash结构其实是通过hash函数对各个属性值的散列。既然是散列,就会有一个散列的程度问题。重构时,如能使当前结构内数据rehash后,其散列程度趋于0时,重构效果较好。统计学可以通过计算残差,判断之前的系统是否稳定,相信对于hash结构,同样适用。散列程度的值可以根据冲突数与总数据量之间的关系得到。如下图3。我的代码示例如下:图1:图2:图3:Hashstructure:略Test:略图4:如上图4为输出结果。对比上图1和图2,达到了rehash的效果。(蓝色线上是初始构建hash结构的测试,下方是rehash测试。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年温县医疗事业单位人员招聘考试参考题库及答案解析
- 2026年怀远县医疗事业单位人员招聘笔试备考题库及答案解析
- 2026年曲周县医疗事业单位人员招聘考试参考题库及答案解析
- 2026年神池县社区工作者招聘笔试备考题库及答案解析
- 2026年桓仁满族自治县医疗事业单位人员招聘笔试参考题库及答案解析
- 2026年寿宁县社区工作者招聘笔试模拟试题及答案解析
- 高中一年级信息技术教学设计:5.2使用数据库-从数据查询到数据管理
- 小学四年级科学原子钟寻亲记教学设计-基于时间测量演变的大单元探究课例
- 2026年金门县医疗事业单位人员招聘考试模拟试题及答案解析
- 小学三年级下册科学《小苗快长》教学设计
- 化工行业的法律与法规
- 《保健艾灸师》专项测试题附答案
- 全国2023年4月自考00018《计算机应用基础》真题
- 第3讲“运动图像”的分类研究
- 台球厅暂停营业通知(4篇)
- 人教版二年级上册《道德与法治》全册教案
- 初三数学开学第一课
- 教科版四年级英语上册(广州版)全册课件【完整版】
- 国家审计报告
- 重庆市药品技术审评查验中心工作人员岗招考聘用35人笔试题库含答案解析
- GB/T 17421.2-2016机床检验通则第2部分:数控轴线的定位精度和重复定位精度的确定
评论
0/150
提交评论