数据结构精品课件-哈希函数的构造方法.pptVIP

数据结构精品课件-哈希函数的构造方法.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 查找 8.1 查找的基本概念 8.3 基于树的查找法 8.5 总结与提高 8.2 基于线性表的查找法 8.4 计算式查找---哈希法 8.4 计算式查找---哈希法 一、哈希表的定义 二、哈希函数的构造方法 三、处理冲突的方法 四、哈希表的查找 五、哈希法性能分析 8.4.1 哈希表的定义 以上讨论的各种查找表的共同特点为: 记录在表中的位置和它的关键字之间不存在一个确定的关系,查找的过程是“基于” 比较。查找的效率取决于和给定值进行比较的次数, 这类方法的平均查找长度为O(logn)---O(n)。 对频繁使用的查找表,希望 ASL---〉0。 能否做到? 能! 若以下标为000 ~ 999 的顺序表表示之。 如:为招收的 1000 名新生建立一张查找表, 其关键字为学号,其值的范围为xx000~xx999 (前两位为年份)。 则查找过程可以简单进行:取给定学号的后三位,不需要经过比较便可直接从顺序表中找到待查关键字。 另例:1、各年龄人口信息统计表; 2、解放后各年国民经济信息统计表。 上述几例的特点为: 记录在表中的位置与其关键字之间存在一种确定的对应关系, 按此对应关系可根据关键字的值寻址,从而获得待查纪录。这种查找表称为哈希表,关键字与记录地址间的对应关系称为哈希函数f(key) 。 {Zi, Qi, Su, Li, Wu, Ci, He, Ye, Du} 又例:对于如下 9 个关键字 设 哈希函数 f(key) = ?(Ord(第一个字母) -Ord(A)+1)/2? Ci Zi Qi Su Li Wu He Ye Du 问题: 若需添加关键字 Zh , 怎么办? 此类问题称为“冲突”,如何解决? 0 1 2 3 4 5 6 7 8 9 10 11 12 13 从上述例子可见: 哈希表的构造、使用中有两个问题有待研究: 1、如何根据关键字集合的特点,选择合适的哈希函数,使关键字均匀的散列到表中? 2、当不同的关键字所得的哈希函数值相同时,即f(k1)=f(k2), 如何有效的处理这类“冲突”现象(碰撞),使建表、查找均能有效地进行? 根据选定的函数 H(key) 和处理冲突的方法, 将一组关键字映象到一个有限的、连续的地址集 (区间) 上,并以每个关键字在地址集中的 “映象”作为相应记录在表中的存储位置,由此构造所得的查找表称为“哈希表” (散列表、杂凑表) , 所选择的函数H (key)称为哈希函数。 哈希表的定义: 返回 若是非数字关键字,则需先对其进行 数字化处理。 1. 直接定址法 3. 平方取中法 5. 除留余数法 4. 分段叠加法 6. 随机数法 2. 数字分析法 “好的”哈希函数应该是“均匀”的,对数字型关键字,一般有下列哈希函数的构造方法: 二、构造哈希函数的方法 哈希函数为关键字的线性函数 H(key) = key 或者 H(key) = a ? key + b 其中a和b为常数(此哈希函数称为自身函数) 所得的地址集合的大小等于关键字集合的大小,这种哈希函数不会发生冲突。 1. 直接定址法 例1:有一个从1岁到100岁的人口数字统计表,其中,年龄作为关键字,哈希函数取关键字自身。 H(key)=key 例2:有一个解放后出生的人口调查表,关键字是年份,哈希函数取关键字加一常数: H(key)=key+(-1948) 此方法仅适合于: 能预先估计出全体关键字的每一位上各种数字出现的频度。 假设关键字集合中的每个关键字都是由 s 位数字组成 (u1, u2, …, us),分析关键字集中的全体,去掉数字重复出现频度很高的位, 提取数字均匀分布的若干位或它们的组合作为地址。 2. 数字分析法 例3:有80个记录,其关键字为8位十进制数。假设哈希表的表长为100,则可取两位关键字组成哈希地址。 假设这80个关键字中的一部分如下所示: 8 1 3 4 6 5 3 2 8 1 3 7 2 2 4 2 8 1 3 8 7 4 2 2 8 1 3 0 1 3 6 7 8 1 3 2 2 8 1 7 8 1 3 3 8 9 6 7 8 1 3 5 4 1 5 7 8 1 3 6 8 5 3 7 8 1 4

文档评论(0)

极研教育 + 关注
官方认证
服务提供商

SAC证券行业专业人员持证人

承接各类可行性研究报告撰写,详情加v:JiYan-edu

认证主体 天津西青区极研智慧智能科技有限公司
IP属地天津
领域认证 该用户于2023年10月01日上传了SAC证券行业专业人员
统一社会信用代码/组织机构代码
91120111MA07276K52

1亿VIP精品文档

相关文档