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

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

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例:关键字为:0座机电话号码4,哈希地址位数为 4。 5 8 6 4 4 2 2 0 0 4 1 0 0 8 8 Hkey0088 移位叠加 5 8 6 4 0 2 2 4 0 4 6 0 9 2 Hkey6092 间界叠加 5. 除留余数法(最常用)构造:取关键字被某个不大于哈希表表长 m 的数 p 除后所得 余数作哈希地址,即 Hkey 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. 随机数法构造:取关键字的随机函数值作哈希地址,即:Hkey Randomkey 其中,Random 为伪随机函数。适于关键字长度不等的情况。实际造表时,采用何种构造哈希函数的方法取决于建表的关 键字集合的情况(包括关键字的范围和形态),总的原则是使产 生冲突的可能性降到尽可能地小。选取哈希函数,考虑以下因素:1)计算哈希函数所需时间2)关键字长度3)哈希表长度(哈希地址范围)4)关键字分布情况5)记录的查找频率“处理冲突”的实际含义是:为产生冲突的地址寻找另一个 哈希地址。 9.3.3 处理冲突的方法 1. 开放定址法当发生冲突时,在冲突位置的前后附近寻找可以存放记录 的空闲单元。用此法解决冲突,要产生一个探测序列,沿着此 序列去寻找可以存放记录的空闲单元。最简单的探测序列产生 方法是进行线性探测,即当发生冲突时,从发生冲突的存储位 置的下一个存储位置开始依次顺序探测空闲单元。为产生冲突的地址 Hkey 求得一个探查地址序列:H0, H1, H2, …, Hs1≤s≤m - 1 其中:Hi Hkey + di MOD m i 1, 2, …, s 沿此序列逐个地址探查,直到找到一个空位置(开放的地址), 将发生冲突的记录放到该地址中。 m 为哈希表的表长 0123456789 10 11 12 13 Dai Chen Zhao Qian Sun Li Wu Han Yef key ?Ord关键字首字母 - Ord‘A’ + 1 / 2对增量 di 有三种取法: 线性探测再散列:di 1, 2, 3, …, m-1 二次探测再散列(平方探测再散列 ):di 12, -12, 22, -22, 32, …, ±k2 k ? m/2伪随机探测再散列(双散列函数探测再散列 ):di 伪随机数序列 0123456789 10 11 12 13 Dai Chen Zhao Qian Sun Li Wu Han Ye 线性探测再散列 Du 例:表长为 11 的哈希表中已填有关键字为 17,60,29 的记录,Hkeykey MOD 11,现有第 4 个记录,其关键字为 38,按三种处理冲突的方法,将它填入表中。 0 1 2 3 4 5 6 7 8 9 10 60 17 29 1 H3838 MOD 115 冲突H15+1 MOD 116 冲突H25+2 MOD 117 冲突H35+3 MOD 118 不冲突 38 2 H3838 MOD 115冲突H15+12 MOD 116 冲突H25-12 MOD 114不冲突 38 3 H3838 MOD 115 冲突设伪随机数序列为 9,则:H15+9 MOD 113 不冲突 38 2. 再哈希法方法:构造若干个哈希函数,当发生冲突时,计算另一个哈 希地址,即:Hi RHikeyi 1, 2, …, k 其中:RHi —— 不同的哈希函数。特点:不易产生“聚集”,但计算时间增加。 3. 溢出区法除基本的存储区外(称为基本表),另外建立一个公共溢出 区(称为溢出表),当发生冲突时,记录可以存入这个公共溢出 区。 4. 链地址法方法:将所有关键字为同义词的记录存储在一个单链表(同 义词子表)中,并用一维数组存放头指针。 例:已知一组关键字 19, 14, 23, 1, 68, 20, 84, 27, 55, 11, 10, 79哈希函数为

文档评论(0)

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

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

1亿VIP精品文档

相关文档