- 1、本文档共152页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构chap008.ppt
第九章 查 找 何谓查找表 ? 查找表可分为两类: 术语 查找 如何进行查找? 提要 9.1 静 态 查 找 表 抽象数据类型定义: 基本操作 P: Create(ST, n); Destroy(ST); Search(ST, key); Traverse(ST, Visit()); 假设静态查找表的顺序存储结构为: 数据元素类型的定义为: 静态查找表可以有不同的表示方法,在不同的表示方法中,实现查找操作的方法也不同。 一、顺序查找表 分析顺序查找的时间性能 对顺序表而言,Ci = n-i+1 顺序查找的优缺点: 二、有序查找表 例如: key=64 的查找过程如下: 分析折半查找的平均查找长度 折半查找在查找不成功时的关键字比较次数不超过 ?log2n?+1。 三、静态查找树表 定义: 介绍一种次优二叉树的构造方法: 例如: 所得次优二叉树如下所示: 构造次优二叉树的算法 次优查找树采用二叉链表的存储结构 三、索引顺序表 例如: 索引顺序表的查找过程: 索引顺序查找的平均查找长度 = 查找“索引”的平均查找长度 + 查找“顺序表”的平均查找长度 9.2 动 态 查 找 表 抽象数据类型动态查找表的定义如下: 基本操作P: InitDSTable(DT); DestroyDSTable(DT); SearchDSTable(DT, key); InsertDSTable(DT, e); DeleteDSTable(T, key); TraverseDSTable(DT, Visit()); 提要 一、二叉排序树(二叉查找树) 1.定义: 例如: 通常,取二叉链表作为二叉排序树的存储结构: 2.二叉排序树的查找算法: 例如:二叉排序树 算法请看: 3.二叉排序树的插入算法 4.二叉排序树的删除算法 (1)被删除的结点是叶子结点 (2)被删除的结点只有左子树或者只有右子树 (3)被删除的结点既有左子树,又有右子树 算法描述如下: 其中删除操作过程如下所描述: 5.查找性能的分析 例如: 最好的情况是二叉排序树的深度与折半查找的判定树深度相同;最坏的情况是单枝树。 下面讨论平均情况: 二、二叉平衡树 二叉平衡树是二叉查找树的另一种形式,其特点为: 构造二叉平衡(查找)树的方法是: 在插入过程中,采用平衡旋转技术。 平衡树的查找性能分析: 先看几个具体情况: 反过来问,深度为 h 的二叉平衡树中所含结点的最小值 Nh 是多少? 三、 B - 树 1.B-树的定义 B-树结构的C语言描述如下: 多叉树的特性 查找树的特性 平衡树的特性 2.查找操作: 返回的是如下所述结构的记录: 3.插入 例如:下列为 3 阶B-树 4.删除 5.查找性能的分析 结论: 四、B+树 1.B+树的结构特点: 2.查找过程 3.插入和删除的操作 9.3 哈 希 表 一、哈希表是什么? 用这类方法表示的查找表,其平均查找长度都不为零。 对于频繁使用的查找表,希望 ASL = 0。 例如:为每年招收的 1000 名新生建立一张查找表,其关键字为学号,其值的范围为 xx000 ~ xx999 (前两位为年份)。 但是,对于动态查找表而言, 例如: 从这个例子可见: 因此,在构造这种特殊的“查找表” 时,除了需要选择一个“好”(尽可能少产生冲突)的哈希函数之外;还需要找到一种“处理冲突” 的方法。 哈希表的定义: 二、构造哈希函数的方法 1. 直接定址法 2. 数字分析法 3. 平方取中法 4. 折叠法 5. 除留余数法 为什么要对 p 加限制? 6.随机数法 实际造表时,采用何种构造哈希函数的方法取决于建表的关键字集合的情况(包括关键字的范围和形态),总的原则是使产生冲突的可能性降到尽可能地小。 三、处理冲突的方法 1. 开放定址法 例如: 关键字集合 { 19, 01, 23, 14, 55, 68, 11, 82, 36 } 2. 链地址法 3. 再哈希法 4. 公共溢出区法 四、哈希表的查找 //--- 开放定址哈希表的存储结构 --- 哈希表查找的分析: 可以证明:查找成功时有下列结果:(P.261) 从以上结果可见: 五、哈希表的删除操作 应用 假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有30个,取平均查找长度的上限为2。哈希函数用除留余数法构造,用伪随机探测再散列发处理冲突。 本章小结 本章作业:9.19.39.49.269.99.119.139.149.19 以关键字的平方值的中间几位作为存储地址。求“关键字的平方值” 的目的是“扩大差别” ,同时平方值的中间
文档评论(0)