- 1、本文档共71页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
项目七 查 找 项目导读 查找是计算机应用中最常用的操作。因此,查找算法的优劣对系统的运行效率影响极大。本章首先介绍查找的概念,然后讨论线性表、哈希表的查找方法。 学习目标 通过本章学习,要求掌握如下内容: 1.掌握查找的基本概念 2.掌握顺序表的定义及查找方法 3.哈希表的定义及查找方法 4.哈希表冲突的处理方法 7.4 分块查找 7.5 哈希表查找 四、应用题 名词解释: 哈希表 同义词: 2. 回答问题并填空 (1)哈希表存储的基本思想是什么? (2)哈希表存储中解决冲突的基本方法有哪些?其基本思想是什么? (4)用线性探查法解决冲突时,如何处理被删除的结点?为什么? (5)哈希法的平均检索长度不随( )的增加而增加,而是随( )的增大而增加。 K1 = 6 1 5 1 1 4 1 K2 = 6 1 0 3 2 7 4 K3 = 6 1 1 1 0 3 4 K4 = 6 1 3 8 2 9 9 K5 = 6 1 2 0 8 7 4 K6 = 6 1 9 5 3 9 4 K7 = 6 1 7 0 9 2 4 K8 = 6 1 4 0 6 3 7 对这8个关键字进行分析可以看出:在关键字的第一位上的数码均为6,第二位上的数码均为1,分布集中,丢掉;而第三位数码和第五位数码分布均匀。假设表长为100,则可取分布均匀的第三位和第五位两位数码为地址。即: hash(K1 )=51,hash(K2 )=02,hash(K3 )=10,hash(K4 )=32 hash(K5 )=28,hash(K6 )=93,hash(K7 )=79,hash(K8 )=46 数字分析法仅适用于所有的关键字可能出现的值都是已知的情况。在许多情况下,构造哈希函数时,不一定能已知关键字的全部情况,用数字分析法不一定合适。 3.平方取中法 这是一种较常用的哈希函数构造方法。其构造原则是,先计算出关键字值的平方,然后取它的中间几位作为哈希地址的编码。 例如,有如下4个关键字,对其关键字值做平方运算,然后取中间三位作为哈希函数值: 关键字key 关键字的平方 hash(key) 122157778355001 778 122157800460004 800 001233265775625 265 004454315775625 315 这种方法是要使关键字内部代码的每一位都在散列过程中起作用;至于取中间的几位和哪几位作为哈希函数的值,视具体情况而定。由于一个数平方后的中间几位数和数的每一位都相关,由此使随机分布的关键字得到哈希地址也是随机的。 4.折叠法 有时关键字含位数较多,则可将关键字分成位数相同的几段,每段位数等于地址长度(最后一段的位数可以小于地址码长度),然后取这几段的叠加和(舍去最高位进位)作为散列地址。分段方法不同,折叠的方法不同,得到的哈希函数值也就不同。例如:设k=5824422415,要求转换为4位的地址码。 5.除留余数法 选择一个适当的正整数p,用p 去除关键字,取其余数作为哈希地址。其中p通常取小于或等于表长m的最大素数,即: hash(k)= k % p (p≤m)。 7.5.3 哈希冲突解决方法 在选择散列函数时,要尽量避免出现冲突,但很难做到不发生冲突,因此必须采用合适的办法来处理冲突。这里介绍两种最基本的方法:开放地址法和拉链法。 1.开放地址法 用开放地址法处理冲突就是当冲突发生时,形成一个探查序列,沿着这个序列逐个地址探查,直到找出一个空位置(开放的地址),将发生冲突的关键字存放到该地址中。开放地址法又称为闭散列方法。常用的探查序列是线性探查和双散列函数探查。 线性探查法 当发生冲突时,为给定关键字k找一个空位置的最简单的方法是进行线性探查,设发生冲突的地址为d,则探查的地址序列为d+1,d+2,…,m-1,0,…,d-1。其中m是散列表的长度。一旦找到一个空位置就把k存入,插入过程结束。如果用完整个地址序列仍未找到空位置,则散列表已满,插入失败。设关键字序列为:{7,14,8,16,11},散列函数为hash(k)=k%7,用线性探查法处理冲突的线性表如图7-4所示。 图7-4 线性探查法处理冲
您可能关注的文档
- 关于BIOS实现第三方登录认证方案.pdf
- 手机客户端机型系列的标准和适配.ppt
- 项目前期策划建议摘要.ppt
- 第四章 ActionScript3 Flash编程无基础入门教程.doc
- 第07章2 树及二叉树.ppt
- 线程共享进程数据要领.pdf
- php基础语法之数组及数组遍历.docx
- 第八章 电子科技大学2015年硕士研究生计算机专业基础考研真题_电子科技大学专业课真题.pdf
- 华南理工大学 操作系统课件第3讲并发控制.ppt
- 第2篇 MFC应用程序概述.ppt
- 2025年成都市玩偶生产荧光涂鸦互动玩偶开发可行性研究报告.docx
- 2025年成都市海绵生产用于体育馆室外运动场地透水改造可行性研究报告.docx
- 2025年天津市体操鞋企业团建运动应用报告.docx
- 2025年上海市溶洞极限运动(速降)场地开发可行性研究报告.docx
- 2025年上海市涵洞工程施工技术应用可行性研究报告.docx
- 2025年上海市体育场馆设施扎带安全防护可行性研究报告.docx
- 2025年上海市牦牛育肥产业园区建设可行性研究报告.docx
- 2025年旅拍宠物陪伴拍摄项目可行性研究报告.docx
- 2025年上海市进口食品节庆主题快闪店可行性研究报告.docx
- 2025年上海市洗选厂尾矿综合利用产业化可行性研究报告.docx
文档评论(0)