- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章_Hash表技术
第8章 哈希表(Hash)技术 8.1 Hash表的基本概念 如果将数据元素的存储位置与它的关键字之 间建立一个确定的关系H,使每个关键字和一 个唯一的存储位置对应,在查找时,只需要根 据对应关系计算出给定的关键字值k对应的值 H(k),就可以得到记录的存储位置,这就是本 节将要介绍的哈希表查找方法的基本思想。 设表的长度为n。如果存在一个函数i=i(k), 对于表中的任意一个元素的关键字k,满足以 下条件:(1)1≤i≤n;(2)对于任意的元素关键字k1≠k2,恒存在 i(k1)≠i(k2). 则称此表为直接查找表。其中函数i=i(k)称为 关键字k的映像函数。由此定义可知,对直接查 找表的查找,只需根据i=i(k)计算出待查关键 字项目在表中的序号即可。 要在直接查找表中取出关键字k的元素,也只需做以下两步:1)计算关键字k的映象函数i=i(k);2)检查表中第i项:若第i项为空,则说明表中没有关键字为k的元素;否则取出第i项中的元素即可。 在直接查找表中,不允许存在元素的冲突。但在实际 应用中,这一条件一般很难满足,即往往出现这样的 情况:对于两个不同的关键字k1≠k2,有i(k1)=i(k2) ,称k1、k2这两个元素发生了冲突(collision),即 两个不同的元素需要存放在同一个存储单元中。 将关键字序列 (09,31,26,19,01,13,02,11,27, 16,05,21)依次填入长度为n=12的表中。映像函数为 i=INT(k/3)+1。 设表的长度为n。如果存在一个函数i=i(k),对于表 中的任意一个元素的关键字k,满足1≤i≤n,则称此表为 Hash表。其中函数值i=i(k)称为关键字k的Hash码(或 Hash地址或散列地址)。 一个好的哈希函数应使函数值均匀的分布在存储 空间的有效地址范围内,以尽可能减少冲突。 Hash函数的构造方法: 取关键字或关键字的某个线性函数值为哈希地 址。即: H(key)=key H(key)=a*key+b 其中,a,b为常数(这种哈希函数叫做自身函数) 将关键字的编码除以表的长度,最后所得的余数 作为Hash码,即i=mod(k,n)。k为关键字,n为Hash 表的长度,mod为模余运算符(规定:当mod(k,n)=0 时,取I=n)。本方法构造的Hash码,其匀称性比较 好,但是以一次除法为代价,在除法较快的机器上可 以使用。 选择一个随机函数,取关键字的随机函数值为它的哈希地 址,基H(key)=random(key),其中radnom为随机函数。通常, 当关键字长度不等时采用此法构造哈希函数较恰当。 计算哈希函数所需时间 关键字的长度 哈希表的大小 关键字的分布情况 数据元素的查找频率 8.2 几种常用的Hash表 将关键字k及有关信息填入线性Hash表的步骤: 1)计算关键字k的Hash码i=i(k)。 2)检查表中第i项的内容: 若第i项为空,则将关键字k及有关信息填入该项; 若第i项不空,则令i=mod(i+1,n),转2)继续检查。 只要Hash表尚未填满,最终总可以找到一个空项,将关键 字k及有关信息填入到Hash表中。 要在线性Hash表中取出关键字k的元素,其步骤如下: 将关键字序列(09,31,26,19,01,13,02,11 ,27,16,05,21)依次填入长度为n=12的线性 Hash表中。设Hash码为i=INT(k/3)+1。 2)在线性Hash表的填入过程中,处理冲突时会带 来新的冲突(不顾后效)。 当Hash表的长度n设计成n=2k时 1)计算关键字k的Hash码i0=i(k)。且令i=i0。 2)伪随机数序列初始化,令j=1(即将取随机数指针指向伪 随机数序列中的第1个随机数)。 3)检查表中第i项的内容: 若第i项为空,则将关键字k及有关信息填入该项;若第i 项不空,则令i=mod(i0+RN(j),n),并令j=j+1(即将 取随机数指针指向下一个随机数),转3)继续检查。其中 RN(j)表示伪随机数序列RN中的第j个随机数。 将关键字序列(09,31,26,19,01,13,02,11 ,27,16,05,21)依次填入长度为n=24=16的随 机Hash表中。设Hash码为i=INT(k/3)+1。 伪随机数序列为:1,6,15,12,13,2,11,8, 9,14,7,4,5,10,3,0。 要在随机Hash表中取出关键字k的元素的步骤: 1)计算关键字k的Hash码i0=i(k)。且令i=i0。 2)伪随机数序列初始化,令j=1(即将
您可能关注的文档
- 第五章_输电线路的纵联保护.ppt
- 第五章 果树育苗.ppt
- 第五章传票与账表算法及.ppt
- 第五章 沟通技能二——非言语信息的表达.ppt
- 第五章、中日甲午战争.ppt
- 第五章、MFC框架.ppt
- 第五章保税货物的通关.ppt
- 第五章可控气氛炉-课十二.ppt
- 第五章二手车交易.ppt
- 第五章基本检索与周游方法.ppt
- 第18讲 第17课 西晋的短暂统一和北方各族的内迁.docx
- 第15讲 第14课 沟通中外文明的“丝绸之路”.docx
- 第13课时 中东 欧洲西部.doc
- 第17讲 第16 课三国鼎立.docx
- 第17讲 第16课 三国鼎立 带解析.docx
- 2024_2025年新教材高中历史课时检测9近代西方的法律与教化含解析新人教版选择性必修1.doc
- 2024_2025学年高二数学下学期期末备考试卷文含解析.docx
- 山西版2024高考政治一轮复习第二单元生产劳动与经营第5课时企业与劳动者教案.docx
- 第16讲 第15课 两汉的科技和文化 带解析.docx
- 第13课 宋元时期的科技与中外交通.docx
最近下载
- 单向板肋梁楼盖计算.docx
- 作业4:工学一体化课程《小型网络安装与调试》工学一体化课程考核方案.docx VIP
- 中国画之写意画.ppt VIP
- (2019苏教)小学科学三年级上册:全册整套教案资料.pdf
- 核心素养导向的高中数学课例设计研究与实践(样例)(1).doc
- 驾驶证延期委托书模板.doc
- 作业5:工学一体化课程《小型网络安装与调试》工学一体化课程终结性考核试题.docx VIP
- 作业5:工学一体化课程《小型网络安装与调试》工学一体化课程终结性考核试题.pdf VIP
- 中国画的构图形式ppt课件.pptx
- 作业11:《小型网络安装与调试》工学一体化课程教学进度计划表.pdf VIP
文档评论(0)