数据结构第8章查找幻灯片.ppt

  1. 1、本文档共70页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hash表的查找及分析 void LinkHinsert(Renode *HT[m], Renode *S) //将指针S所指记录插入表HT的算法(如图8.37所示)// { int d; Renode *p; p=LinkHsearch(HT,S-key); //查找S结点// if(p) ERROR(); //记录已存在// else { d=H(S-key); S-next=HT[d]; HT[d]=S; } } 图8.37 Hash表的查找及分析 3.Hash表的查找算法分析 从Hash表的查找算法中可以看出: (1)虽然记录key与记录地址之间建立了映象关系,但由于“冲突”的发生,使查找记录需要少量比较,故仍要以ASL衡量查找效率。 (2)ASL取决于H(key)、处理冲突的方法以及装填因子等因素。但在假定H(key)能使记录较均匀分布的情况下,ASL主要取决于处理冲突的方法。因为原本无冲突的记录由于以前冲突的发生,也得按照冲突现象来处理,无疑影响了Hash表的查找效率。 例8-21 按H(key)=key%l1,处理冲突方法为“线性探查法”组织的Hash表HT1如图8.38(记录数n=8,表长m=12): C为查找key的比较次数。如查找key=17:H(17)=17%11=6,第6单元key≠17,查找l次;求H1=(6+1)%12=7,第7单元key≠l7,查找2次;求H2=(6+2)%12=8,第8单元key=I7,查找3次。 HT1: H(key) 0 1 2 3 4 5 6 7 8 9 10 11 C 1 2 1 2 1 1 3 4 22 33 ^ 14 25 ^ 6 18 17 28 ^ ^ (次) Hash表的查找及分析 例8-22 按H(key)=key%l1、处理冲突方法为“二次探查法”组织的Hash表HT2,如图8.39: 查找key=17的记录仍为3次: H(17)=6——1次, H1=(6+12)%l1=7——2次, H2=(6-12)%11=5——3次, 故: HT2: H(key) 0 1 2 3 4 5 6 7 8 9 10 11 C 1 2 1 2 3 1 1 4 22 33 ^ 14 25 17 6 18 ^ ^ 28 ^ (次) Hash表的查找及分析 例8-23 按H(key)=key%l1、处理冲突方法为“链地址法”组织的Hash表HT3,如图8.40: H(key) HP 0 1 2 3 4 5 6 7 8 9 10 ^ ^ ^ ^ ^ ^ ^ 25 14 ^ 22 ^ 33 查找key=33、25、28、18这4个记录的次数均为l;查找key=22、14、17这3个记录的次数为2;查找key=6的记录时,次数为3,故此例: ASL=(1?4+2?3+3)/8 ?1.6(次) 28 17 6 ^ 18 ^ Hash表的查找及分析 一般,设Hash表的装填因子为α,采用线性、二次探查法及链地址法解决冲突时,查找成功的平均查找长度分别用公式表示如下: 线性探查法: 二次探查法: 链地址法: 第八章习题(2) 2.设5阶B-树: 1)画出插入=56、70后的树结构; 2)在插入后的树中删除=57、7后的结构。 3.设记录key集合K={4,3,1,7,8,6,2,5,10,9 },Hash表表长m=16;选取:H(key)=(key2)%13;处理冲突方法:“线性探测法”、“二次探测法”和“链地址法(由H(key)的值域确定地址向量)”。请依次取K中各值,构造出满足所给条件的Hash表结构(3个)。 3 7

文档评论(0)

开心农场 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档