数据结构与算法chapter5查找课件(精).pptVIP

数据结构与算法chapter5查找课件(精).ppt

  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文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * 用不同的方法溢出处理冲突时散列表的平均搜索长度如图所示。 例 求散列表大小并设计散列函数 设有一个含200个表项的散列表,用二次探查法解决冲突,按关键码查询时找到一个新表项插入位置的平均探查次数不超过1.5,则散列表项应能够至少容纳多少个表项。再设计散列函数(设搜索不成功的平均搜索长度为 Un=1 / (1 -α), 其中 α为装填因子) 解答:设表中表项个数 n = 200,搜索不成功的平均搜索长度 Un=1 / (1 -α) ? 1.5 ? ? ? 1/3 ? n / m = 200 / m = ? ? 1/3 m ? 600 又 二次散列要求 m 必须是满足 4j+3的质数,故 m 可以取 607 散列函数 hash( key ) = key % m 哈希冲突解决方法 (1) 开散列方法(拉链法) (2) 闭散列方法(开地址法) (3) 桶定址法 桶:一片足够大的存储空间 桶定址:为表中的每个地址关联一个桶。 如果桶已经满了,可以使用开地址法来处理 例如,插入A5,A2,A3,B5,A9,B2,B9,C2, 采用线性探查法解决冲突 0 1 2 3 4 5 6 7 8 9 A5 A2 A3 B5 A9 B2 B9 C2 桶定址法 要根据散列表的构造方法,及冲突处理方法的不同而不同。 散列表的查找 课堂练习 设散列表为HT[13],散列函数为h(key)=key%13。用闭散列法解决冲突,对下列关键码序列12,23,45,57,20,03,78,31,15,36造表。 (1)采用线性探查法寻找下一个空位,画出相应的散列表,并计算等概率下搜索成功的平均搜索长度和搜索不成功的平均搜索长度。 (2)采用双散列法寻找下一个空位,再散列函数为RH(key)=(7*key)%10+1,寻找下一个空位的公式为 Hi=(Hi-1+RH(key))%13,H1=H(key)。画出相应的散列表,并计算等概率下搜索成功的平均搜索长度。 小结 基本概念 静态查找 动态查找 散列表的查找 冲突的处理 课后作业 文档作业 P238:1-8 上机作业 P238: 9,10 实现顺序查找、折半查找算法 5.4 通讯录的实现 * * * * * * * * * * * * * * * 索引表是按块内最大关键码有序的,且长度也不大,可以二分检索,也可以顺序检索 各子表内各个记录不是按记录关键码有序,只能顺序检索 * * * * * * 线性索引的索引文件 存储在内存中,把索引存储在内存中能大大地提高检索速度 存储在磁盘中 根据线性索引的文件大小和内存的空间限制 3阶B+树插入 插入15 3阶B+树插入 插入15后 3阶B+树插入 插入16 结点满,需要分裂 3阶B+树插入 插入17 3阶B+树插入 插入19 结点满,需要分裂 结点满,需要分裂 树增加一层 B+树的删除 当关键码不满时,与左右兄弟进行调整、合并的处理和B树类似 关键码在叶结点层删除后,其在上层的复本可以保留,做为一个“分界关键码”存在 也可以替换为新的最大关键码(或最小关键码) 23被删除 但上层结点中的副本保留 阶m=3 删除23 课堂练习 按照以下次序输入关键字的值建立2-3树(3阶B-树):(68,54,82,35,75,90,103,22)。 (1)请画出所建的2-3树。 (2)如果此后依次删除22,75,画出每一步执行后的2-3树的状态。 查找分类 静态查找 顺序查找 二分法查找 分块查找 动态查找 散列 在随机存储中: 200302 200305 200301 张三 李四 王五 19 21 20 200305 200301 200302 李四 王五 张三 21 20 19 查找某一条记录需要进行一系列的“比较”。 查找的效率依赖于比较的次数。 能否在记录的关键字和存储地址之间构造这样一种关系 f ,使得关键字和存储地址一一对应 ? 此对应关系 f 称为散列函数。 学号 姓名 年龄 01 02 03 散列 几个重要概念 负载因子 α=n/m 散列表的空间大小为m 填入表中的结点数为n 冲突 某个散列函数对于不相等的关键码计算出了相同的散列地址 在实际应用中,不产生冲突的散列函数极少存在 同义词 发生冲突的两个关键码 10.3.1 散列函数 散列函数:把关键码值映射到存储位置的函数,通常用 h 来表示 Address = Hash ( key ) 散列函数的选取原则 运算尽可能简单 函数的值域必须在表长的范围内 尽可能使得关键码不同时,其散列函数值亦不相同 常用散列函数选取方法 1. 除余法 2.折叠法 3.

文档评论(0)

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

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

1亿VIP精品文档

相关文档