数据结构与算法-第八章-查找.ppt

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

为产生冲突的关键字H(key)求得一个探测地址序列(在其中逐个探测空哈希地址):H0,H1,H2,…,Hs1≤s≤m-1其中:H0=H(key)Hi=(H(key)+di)MODmdi为探测增量有三种,i=1,2,…,m-11.开放定址法(1)线性探测再散列

di=c?i最简单的情况c=1(2)平方探测再散列

di=12,-12,22,-22,…,(3)随机探测再散列

di是一组伪随机数列或者di=i×H2(key)(又称双散列函数探测)探测增量序列di的三种取法:即:产生的Hi均不相同,且m-1个Hi值能覆盖哈希表中所有地址。则要求:注意:增量di应具有“完备性”※随机探测时的m和di应没有公因子;※平方探测时的表长m应为形如4j+3的素数(如:7,11,19,23,…等);※避免二次聚集。012345678910例如哈希表长m=11,现有关键字集合:{19,01,23,14,55,68,11,82,36}设定哈希函数H(key)=keyMOD11190123145568(1)采用线性探测再散列处理冲突1182361121362510123456789101901231468(2)采用二次探测再散列处理冲突55118236112121412ASL=22/9ASL=15/9设:H2(key)=(3key)MOD10+1di=i×H2(key)190123145568118236211121214ASL=15/9012345678910(3)采用双散列函数探测线性探测处理冲突时:ASL=双散列探测处理冲突时:ASL=22/915/9二次探测处理冲突时:ASL=15/9本例不同的处理冲突方法的ASL为:将所有哈希地址相同的记录都链接在同一链表中。0123456140136198223116855???????ASL=(6×1+2×2+3)/9=13/9设哈希函数为:H(key)=keyMOD7显然不会发生二次聚集2.链地址法:按哈希函数的值域的范围设立向量为基本表,另设立同样大小的向量为公共溢出区,将所有发生冲突的记录都顺序存放在公共溢出区中。3.建立公共溢出区哈希表的查找过程和造表过程一致。对于给定值K,计算哈希地址i=H(K)若r[i]=NULL则查找不成功若r[i].key=K则查找成功否则“求下一地址Hi”,直至r[Hi]=NULL(查找不成功)或r[Hi].key=K(查找成功)为止。采用开放定址处理冲突,则查找过程为:四、哈希表的查找决定哈希表查找ASL的因素:(1)选用的哈希函数;(2)选用的处理冲突的方法;(3)哈希表饱和的程度,即装载因子α=n/m值的大小(n—记录数,m—表的长度)从查找过程得知,哈希表查找的平均查找长度实际上并不等于零

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档