- 1、本文档共96页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
查找的概念 定义 平均查找长度(ASL) 静态查找表 顺序表的查找 有序表的查找 索引顺序表的查找 小结 动态查找表 二叉排序树 平衡二叉树 哈希表 哈希表定义 构造方法 冲突处理方法 哈希表的查找 人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。 * 在平衡树上进行查找的过程和二叉排序树相同,因此,查找过程中和给定值进行比较的关键字的个数不超过平衡 树的深度。 平衡树的查找性能分析: 问:含 n 个关键字的二叉平衡树可能达到的最大深度是多少? n = 0 空树 最大深度为 0 n = 1 最大深度为 1 n = 2 最大深度为 2 n = 4 最大深度为 3 n = 7 最大深度为 4 先看几个具体情况: 反过来问,深度为 h 的二叉平衡树中所含结点的最小值 Nh 是多少? h = 0 N0 = 0 h = 1 h = 2 h = 3 一般情况下 N1 = 1 N2 = 2 N3 = 4 Nh = Nh-1 + Nh-2 + 1 利用归纳法可证得 Nh = Fh+2 - 1 因此,在二叉平衡树上进行查找时, 查找过程中和给定值进行比较的关键字的个数和 log(n) 相当。 总之,含有 n 个结点的二叉平衡树能达到的最大深度 hn = log?(?5 (n+1)) - 2。 一、哈希表是什么? 二、哈希函数的构造方法 三、处理冲突的方法 四、哈希表的查找 五、哈希表的删除操作 9.3 哈 希 表 前述查找表的各种结构的共同特点:记录在表中的位置和它的关键字之间不存在一个确定的关系, 一、哈希表是什么? 查找的效率取决于和给定值进行比较的关键字个数。 用这类方法表示的查找表,其平均查找长度都不为零。 对于频繁使用的查找表,希望 ASL = 0。 只有一个办法:预先知道所查关键字在表中的位置 即,要求:记录在表中位置和其关键字之间存在一种确定的关系。 若以下标为000 ~ 999 的顺序表表示之。 例如:为每年招收的 1000 名新生建立一张查找表,其关键字为学号,其值的范围为 xx000 ~ xx999 (前两位为年份)。 则查找过程可以简单进行:取给定值(学号)的后三位,不需要经过比较便可直接从顺序表中找到待查关键字。 基本思想:记录的存储位置与关键字之间存在对应关系,Loc(i)=H(keyi) 优点:查找速度极快O(1),查找效率与元素个数n无关 哈希函数 关键字 集合 存储地址 集合 hash 数据元素序列(14,23,39,9,25,11),若规定每个元素k的存储地址H(k)=k,请画出存储结构图。 … 14 … 11 … 9 … 内容 地址 … 39 … 25 24 23 14 11 9 23 25 39 例2 根据哈希函数H(k)=k 查找key=9,则访问H(9)=9号地址,若内容为9则成功; 若查不到,则返回一个特殊值,如空指针或空记录。 如何查找 … 14 … 11 … 9 … 内容 地址 … 39 … 25 24 23 14 11 9 23 25 39 哈希方法(杂凑法) 选取某个函数,依该函数按关键字计算元素的存储位置,并按此存放; 查找时,由同一个函数对给定值k计算地址,将k与地址单元中元素关键码进行比,确定查找是否成功。 哈希函数(杂凑函数):哈希方法中使用的转换函数 有关术语 冲 突:不同的关键码映射到同一个哈希地址 哈希表(杂凑表):按上述思想构造的表 有关术语 … 14 … 11 … 9 … 内容 地址 … 39 … 25 24 23 14 11 9 23 25 39 同义词:具有相同函数值的两个关键字 key1?key2,但H(key1)=H(key2) (14,23,39,9,25,11) 哈希函数:H(k)=k mod 7 25 39 23 9 14 6个元素用7个 地址应该足够! H(14)=14%7=0 11 H(25)=25%7=4 H(11)=11%7=4 同义词 有冲突 0 1 2 3 4 5 6 冲突现象举例 冲突是不可能避免的 如何减少冲突 构造好的哈希函数 制定一个好的解决冲突方案 哈希函数的构造方法 根据元素集合的特性构造 地址空间尽量小 均匀 直接定址法 数字分析法 平方取中法 折叠法 除留余数法 随机数法 Hash(key
文档评论(0)