第9章-查找课件.pptVIP

  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文档。上传文档
查看更多
第9章-查找课件

9.4 Hash查找 9.4.1 Hash查找的基本概念 查找操作要完成什么任务? 我们学过哪些查找技术?这些查找技术的共性? 顺序查找、折半查找、二叉排序树查找等。 以上讨论的查找方法,由于记录的存储位置与关键字之间不存在确定的关系,因此查找时需要进行一系列对关键字的查找比较,即“查找算法”是建立在比较的基础上的,查找效率由比较一次缩小的查找范围决定。 待查值k 确定k在存储结构中的位置 9.4.1 Hash查找的基本概念 能否不用比较,通过关键码直接确定存储位置? 理想的情况是,依据关键字直接得到其对应的记录位置,即要求关键字与记录位置间存在一一对应关系,通过这个关系,能很快地由关键字得到对应的记录位置。 9.4.1 Hash查找的基本概念 散列技术仅仅是一种查找技术吗? 散列既是一种查找技术,也是一种存储技术。 散列是一种完整的存储结构吗? 散列只是通过记录的关键码定位该记录,没有完整地表达记录之间的逻辑关系,所以,散列主要是面向查找的存储结构。 9.4.1 Hash查找的基本概念 散列技术适合于哪种类型的查找? 散列技术一般不适用于允许多个记录有同样关键码的情况。散列方法也不适用于范围查找,换言之,在散列表中,我们不可能找到最大或最小关键码的记录,也不可能找到在某一范围内的记录。 9.4.1 Hash查找的基本概念 散列技术的关键问题: ⑴ 散列函数的设计。如何设计一个简单、均匀、存储利用率高的散列函数。 ① 所选函数尽可能简单,以便提高转换速度。 ② 所选函数对关键字计算出的地址,应在Hash地址集中大致均匀分布,以尽量减少冲突。 9.4.1 Hash查找的基本概念 散列技术的关键问题: ⑵ 冲突的处理。如何采取合适的处理冲突方法来解决冲突。 ① Hash函数。若Hash函数选择得当,就可使Hash地址尽可能均匀地分布在Hash地址空间上,从而减少冲突的发生;否则,若Hash函数选择不当,就可能使Hash地址集中于某些区域,从而加大冲突的发生。 ② 处理冲突的方法。选择适当的Hash函数可以减少冲突,但不能避免冲突,因此当冲突发生时,必须有较好的处理冲突的方法。 ③ Hash表的装填因子。 散列函数是关键码的线性函数,即: H(key) = a ? key + b (a,b为常数) 例:关键码集合为{10, 30, 50, 70, 80, 90},选取的散列函数为H(key)=key/10,则散列表为: 0 1 2 3 4 5 6 7 8 9 10 30 50 70 80 90 适用情况? 事先知道关键码,关键码集合不是很大且连续性较好。 9.4.2 Hash表的构造 ——直接定址法 散列函数为: H(key)=key mod p 14 7 14 14 7 0 14 散列地址 56 49 42 35 28 21 14 关键码 如何选取合适的 p,产生较少同义词? 例: p =21=3×7 9.4.2 Hash表的构造 ——除留余数法 根据关键码在各个位上的分布情况,选取分布比较均匀的若干位组成散列地址。 例:关键码为8位十进制数,散列地址为2位十进制数 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 ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ 9.4.2 Hash表的构造 ——数字分析法 对关键码平方后,按散列表大小,取中间的若干位作为散列地址(平方后截取)。 事先不知道关键码的分布且关键码的位数不是很大。 适用情况: 例:散列地址为2位,则关键码123的散列地址为: (1234)2=1522756 9.4.2 Hash表的构造 ——平方取中法 将关键码从左到右分割成位数相等的几部分,将这几部分叠加求和,取后几位作为散列地址。 例:设关键码为2 5 3 4 6 3 5 8 7 0 5,散列地址为三位。 2 5 3 4 6 3 5 8 7 + 0 5 ─── 1 3 0 8 移位叠加 2 5 3 3 6 4 5 8 7 + 5 0 ─── 1 2 5 4 间界叠加 适用情况: 关键码位数很多,

文档评论(0)

精华文库 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:7111022151000002

1亿VIP精品文档

相关文档