数据结构:第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文档。上传文档
查看更多
7.2 动态查找表 双向旋转平衡处理:先右后左 -2 A 1 B A L C L B R 1 C C R 右旋 1 B C L B R 1 C C R 2 A A L 7.2 动态查找表 0 B -1 A A L C L B R 1 C C R 双向旋转平衡处理:先右后左 变化前的中序序列:AL A CL C CR B BR 变化后的中序序列:AL A CL C CR B BR 0 B C L B R 0 C C R 2 A A L 左旋 7.2 动态查找表 练习: 写出以下两个序列的平衡二叉树构造过程 (每插入一个结点,绘制一个当前状态) (标明当前每个结点的平衡因子) (不平衡时及时做平衡化处理,标出所用的处理方式) 80 40 90 30 50 20 25 23 40 20 80 10 30 60 90 50 85 70 95 55 7.2 动态查找表 顺序查找、折半查找和二叉排序树查找的比较 顺序查找 折半查找 二叉排序树 表结构 有序表 有序表、无序表 存储结构 顺序结构 顺序结构 线性链表 二叉链表 O() O(n) O(log2n) O(log2n) 适用情况 不经常插入删除 的静态查找表 经常插入删除 的动态查找表 1.若采用链式结构,可用于经常插入删除的情况; 2.若采用顺序结构,且只插入,可将插入限定在表尾,以此避免大量移动数据; 3.若采用顺序结构,且只在表尾插入删除,也可适用,于经常插入删除的情况。 7.3 散列表 什么是散列表 以上两节讨论的表示查找表的各种结构的共同特点: 记录在表中的位置和它的关键字之间 不存在一个确定的关系 查找的过程为给定值依次和关键字集合中各个关键字进行比较, 不同的查找算法因比较次序不同而导致比较次数不同,但ASL总是0 要将ASL降低为0,则必须可以根据给定值直接计算出 关键字所在的位置 即:关键字所在位置可以表示成关键字的函数 满足这样条件的查找表就叫散列表(Hash Table) 7.3 散列表 例:学生名单检索 7.3 散列表 {Zhao, Qian, Sun, Li, Wu, Chen, Han, Ye, Dai} 设 散列函数 f(key) = ?(Ord(第一个字母) -Ord(A)+1)/2? 问题: 若添加关键字 Zhou , 怎么办? 能否找到另一个散列函数? 0 1 2 3 4 5 6 7 8 9 10 11 12 13 Chen Dai Han Li Qian Sun Wu Ye Zhao 7.3 散列表 散列函数 散列函数可以看作是关键字到位置的映射 散列函数的设置很灵活, 只要这个地址集合的大小不超出允许范围即可 由于散列函数是一个压缩映象, 因此,在一般情况下,很容易产生“冲突”现象, 即: key1? key2,而 f(key1) = f(key2) 很难找到一个不产生冲突的散列函数 一般情况下,只能选择恰当的散列函数, 使冲突尽可能少地产生。 7.3 散列表 1. 直接定址法 散列函数为关键字的线性函数 H(key) = key 或者 H(key) = a ? key + b 此法仅适合于: 地址集合的大小 = = 关键字集合的大小 如:学生名单检索 7.3 散列表 2. 数字分析法 假设关键字集合中的每个关键字都是由 s 位数字组成 (u1, u2, …, us), 分析关键字集中的全体, 并从中提取分布均匀的若干位或它们的组合作为地址 此方法仅适合于: 能预先估计出全体关键字的 每一位上各种数字出现的频度 7.3 散列表 构造: 对关键字进行分析,取关键字的 若干位或其组合作散列地址 适于关键字位数比散列地址位数大, 且可能出现的关键字事先知道的情况 7.3 散列表 例: 有80个记录,关键字为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 8 1 3 6 8 5 3 7 8 1 4 1 9 3 5 5 ….. ….. ?? ? ??? ?? 分析: ?只取8 ?只取1 ?只取3、4 ?只取2、7、5 ????数字分布近乎随机 所以:取????任意两位或两位 与另两位的叠加作散列地址 7.3 散列表 3. 平方取中法 以关键字的平方值的中间几位作为存储地址。 求“关键字的平方值

文档评论(0)

学习让人进步 + 关注
实名认证
文档贡献者

活到老,学到老!知识无价!

1亿VIP精品文档

相关文档