第七章查找表.pptVIP

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章查找表

判定树共四层,第一层表示比较一次可查到的结点有一个,第二层表示比较两次可到的结点有两个,第三层表示比较三次可查到的结点有四个,第四层表示比较四次可查到的结点有三个。 计算等概率时查找成功的平均查找长度为(1+2+2+3+3+3+3+4+4+4)/10=29/10。 7.4 散列表(哈希表) 一、基本概念 散列表: 按散列存储方式构造的存储结构称为散列表。 散列函数H(K):将通过特定函数将键值映射为散列表中的存储位置的函数。 散列地址:散列表中数据元素的存储位置通过散列函数进行映射后的地址。 同义词: 在散列表中,不同的键值可能出现相同的散列函数值, 具有相同散列函数值的键值称为同义词. 冲突:一般情况每个键值对应一个不同的散列地址,但在散列表中有时会出现同义词,不同的键值有相同的散列地址。这种现象称为冲突。 散列表技术的主要目标是提高查找效率,即缩短查表和填表的时间。 31 27 26 21 19 16 13 09 11 05 01 02 H(K)=int(K/3)+1 12 11 10 9 8 7 6 5 4 3 2 1 表项序号 根据关键字直接计算出元素所在位置的函数。 例如:设散列函数为: H(K)=int(K/3)+1 (K为键值,计算结果为存储序号) 则构造 01、02、05、09、11、13、16、19、21、26、27、31、的散列表为: 散列函数 两个不同的关键字具有相同的存储位置。 存在问题(冲突): 为了有效地使用散列技术,需要解决两方面的问题: 构造好的散列函数,使冲突的现象尽可能的少; 设计有效的解决冲突的方法。 7.4.2?? 构造哈希函数的几种常用方法 (1) 直接定址法——取关键字或关键字的某个线性函数值为散列地址,即 H(K)=K 或 H(K)=A*K+B;(其中A、B为常数) 直接定址散列函数示例:某公司一险种投保费交纳表(20年), 将年份作关键字,散列函数取关键字本身,若查找第3年应交纳的保费,只要查找表的第3项即可。 …… …… ……. ……. ……. 保费 20 ……. 3 2 1 年份 20 …… 03 02 01 地址 (3)平方取中法——取关键字平方后的中间几位为散列函数。 如:K=308,K2=94864,H(K)=486 ,能扩大键值差别,散列地址比较均匀。 (2) 除后余数法——取关键字被不大于散列表表长m的数p除后所得的余数为散列函数。 即 H(K)=K MOD p (p?m) * * 第七章 查找表 7.1 基本概念 1.集合: 构成对象的整体的所有数据元素.如整数集合, 方形集合等. 在集合中,各结点之间不存在逻辑关系. 同一集合中各元素互不相同. 3.关键字: 用来标识数据元素的数据项. 该数据项的值称为键值. 能唯一标识数据元素的关键字称为主关键字. 否则称为次关键字. 2.查找表:以集合为逻辑结构,以查找为核心运算,同时包括其它运算的数据结构. 4.静态查找表: 以集合为逻辑结构,不包括插入和删除运算的数据结构。 5.动态查找表:以集合为逻辑结构,包括插入、删除、初始化运算的数据结构。 6.查找运算: 根据给定的某个值K, 在查找表中寻找一个其键值等于K的数据元素.找到,则查找 成功,否则 为查找失败. 第七章 查找表 第七章 查找表 查找 在数据元素集合中查找满足某种条件的数据元素的过程称为查找。 最简单且最常用的查找条件是“关键字值等于某个给定值”,在查找表搜索关键字等于给定值的数据元素(或记录)。 若表中存在这样的记录,则称查找成功,此时的查找结果应给出找到记录的全部信息或指示找到记录的存储位置;若表中不存在关键字等于给定值的记录,则称查找不成功,此时查找的结果可以给出一个空记录或空指针。 若按主关键字查找,查找结果是唯一的;若按次关键字查找,结果可能是多个记录,即结果可能不唯一。 查找表的存储结构: 查找表是一种非常灵活的数据结构,对于不同的存储结构,其查找方法不同。为了提高查找速度,有时会采用一些特殊的存储结构。本章将介绍以线性结构、树型结构及哈希表结构为存储结构的各种查找算法。 查找算法的时间效率: 查找过程的主要操作是关键字的比较,所以通常以“平均比较次数”来衡量查找算法的时间效率。 7.2 静态查找 静态查找是指在静态查找表上进行的查找操作,在查找表中查找满足条件的数据元素的存储位置或各种属性。 本节将讨论以线性结构表示的静态查找表及相应的查找算法。 7.2.2 顺序查找

文档评论(0)

75986597 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档