网站大量收购独家精品文档,联系QQ:2885784924

数据结构(C语言版)第9章查找解析.ppt

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构(C语言版)第9章查找解析

例:关键字为:0442205864,哈希地址位数为 4。 5 8 6 4 4 2 2 0 0 4 1 0 0 8 8 H(key)=0088 移位叠加 5 8 6 4 0 2 2 4 0 4 6 0 9 2 H(key)=6092 间界叠加 5. 除留余数法(最常用) 构造:取关键字被某个不大于哈希表表长 m 的数 p 除后所得 余数作哈希地址,即 H(key) = key MOD p, p ? m。 特点:简单,可与上述几种方法结合使用。 p 的选取很重要;p 选得不好,容易产生同义词。 p 应为不大于 m 的素数或不含 20 以下的质因子的合数。 给定一组关键字:12, 39, 18, 24, 33, 21,若取 p = 9, 则他们 对应的哈希函数值将为: 3, 3, 0, 6, 6, 3 例如: 为什么要对 p 加限制? 可见,若 p 中含质因子 3, 则所有含质因子 3 的关键字均 映射到“3 的倍数”的地址上,从而增加了“冲突”的可能。 6. 随机数法 构造:取关键字的随机函数值作哈希地址,即: H(key) = Random(key) 其中,Random 为伪随机函数。 适于关键字长度不等的情况。 实际造表时,采用何种构造哈希函数的方法取决于建表的关 键字集合的情况(包括关键字的范围和形态),总的原则是使产 生冲突的可能性降到尽可能地小。 选取哈希函数,考虑以下因素: 1)计算哈希函数所需时间 2)关键字长度 3)哈希表长度(哈希地址范围) 4)关键字分布情况 5)记录的查找频率 “处理冲突”的实际含义是:为产生冲突的地址寻找另一个 哈希地址。 9.3.3 处理冲突的方法 1. 开放定址法 当发生冲突时,在冲突位置的前后附近寻找可以存放记录 的空闲单元。用此法解决冲突,要产生一个探测序列,沿着此 序列去寻找可以存放记录的空闲单元。最简单的探测序列产生 方法是进行线性探测,即当发生冲突时,从发生冲突的存储位 置的下一个存储位置开始依次顺序探测空闲单元。 为产生冲突的地址 H(key) 求得一个探查地址序列: H0, H1, H2, …, Hs 1≤s≤m - 1 其中:Hi = ( H(key) + di ) MOD m i =1, 2, …, s 沿此序列逐个地址探查,直到找到一个空位置(开放的地址), 将发生冲突的记录放到该地址中。 m 为哈希表的表长 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Dai Chen Zhao Qian Sun Li Wu Han Ye f (key) = ?(Ord(关键字首字母) - Ord(‘A’) + 1) / 2? 对增量 di 有三种取法: 线性探测再散列:di = 1, 2, 3, …, m-1 二次探测再散列(平方探测再散列 ): di = 12, -12, 22, -22, 32, …, ±k2 (k ? m/2) 伪随机探测再散列(双散列函数探测再散列 ): di = 伪随机数序列 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Dai Chen Zhao Qian Sun Li Wu Han Ye 线性探测再散列 Du 例:表长为 11 的哈希表中已填有关键字为 17,60,29 的记录, H(key)=key MOD 11,现有第 4 个记录,其关键字为 38, 按三种处理冲突的方法,将它填入表中。 0 1 2 3 4 5 6 7 8 9

文档评论(0)

little28 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档