- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八章 查找 一、静态查找表 基本概念 顺序查找 折半查找 通常称用于查找的数据集合为查找结构,它是由同一数据类型的对象(或记录)组成。 在每个对象中有若干属性,其中有一个属性,其值可唯一地标识这个对象。称为关键码。使用基于关键码的查找,查找结果应是唯一的。但在实际应用时,查找条件是多方面的,可以使用基于属性的查找方法,但查找结果可能不唯一。 实施查找时有两种不同的环境。 静态环境,查找结构在插入和删除等操作的前后不发生改变。 ? 静态查找表 动态环境,为保持较高的查找效率, 查找结构在执行插入和删除等操作的前后将自动进行调整,结构可能发生变化。 ? 动态查找表 静态查找表结构的定义 衡量一个查找算法的时间效率的标准是:在查找过程中关键码的平均比较次数,也称为平均查找长度ASL(Average Search Length),通常它是查找结构中对象总数 n的函数。 在静态查找表中, 利用数组元素的下标作为数据对象的存放地址。查找算法根据给定值x, 在数组中进行查找。直到找到x在数组中的位置或可确定在数组中找不到x为止。 另外衡量一个查找算法还要考虑算法所需要的存储量和算法的复杂性等问题。 顺序查找 (Sequential Search) 所谓顺序查找, 又称线性查找, 主要用于在线性结构中进行查找。 设若表中有 n 个对象,则顺序查找从表的先端 (或后端) 开始, 顺序用各对象的关键码与给定值 x 进行比较, 直到找到与其值相等的对象, 则查找成功; 给出该对象在表中的位置。 若整个表都已检测完仍未找到关键码与x相等的对象, 则查找失败。给出失败信息。 设置“监视哨”的顺序查找算法 有序顺序表的顺序查找 ( 10, 20, 30, 40, 50, 60 ) 基于有序顺序表的折半查找 设n个对象存放在一个按其关键码从小到大排好了序的有序顺序表中。 折半查找时, 先求位于查找区间正中的对象的下标mid,用其关键码与给定值x比较: A.data[mid].key == x, 查找成功; A.data[mid].key x, 把查找区间缩小到 表的前半部分,继续折半查找; A.data[mid].key x,把查找区间缩小到表的后半部分,继续折半查找。 如果查找区间已缩小到一个对象,仍未找到想要查找的对象,则查找失败。 基于有序顺序表的折半查找递归算法 有序顺序表的折半查找的判定树 ( 10, 20, 30, 40, 50, 60 ) 折半查找性能分析 若设 n = 2h-1,则描述折半查找的判定树是高度为 h-1 的满二叉树。 2h = n+1, h = log2(n+1)。 第0层结点有1个, 查找第0层结点要比较1次; 第1层结点有2个, 查找第1层结点要比较2次; …, 第 i (0 ? i ? h) 层结点有 2i 个, 查找第 i 层结点要比较 i+1次,…。 假定每个结点的查找概率相等,即 pi = 1/n,则查找成功的平均查找长度为 三、散列表(Hash表) 基本思想 三、散列表(Hash表) 散列函数 散列函数的理想目标 设散列表L[0…N-1],则对散列函数H(key): 1、0≤H(key)≤N-1 2、k1≠k2 → H(k1)≠H(k2) 三、散列表(Hash表) 散列函数 散列函数的常用构造方法 选择法 叠加法 折叠法 模除法 数乘法 平方取中法 基数转换法 伪随机法 三、散列表(Hash表) 冲突解决策略 空状态和删除状态 线性探测法 二次散列法 链表法 三、散列表(Hash表) 散列表上的查找 E1:计算H(key),获得存储地址; E2:循环直到元素为空或等于key E21:按照冲突解决策略,计算下一个地址; E3:若元素为空,则查找失败,否则查找成功。 散列表上的插入 E1:计算H(key),获得存储地址; E2:循环直到元素为空 E21:按照冲突解决策略,计算下一个地址; E3:写入新元素 二、树表查找 二叉排序树 基本概念 二叉排序树 在二叉排序树上查找 二叉排序树 在二叉排序树上插入新记录 二叉排序树 从二叉排序树上删除一条记录 平衡二叉树 基本概念 平衡因子 平衡二叉树 平衡二叉树 插入结点的调整策略 LL型:R旋 RR型:L旋 LR型:L旋R旋 RL型:R旋L旋 设输入序列为:43, 25, 29, 67, 17, 88, 54, 47, 35, 62 BiNode *T; BiNode **pRoot = T-lchild;; BiNode *p = T-lchild; p-data : (*pRoot)-data p-
您可能关注的文档
- 北方民族大学文学概论课件第七章 文学创作(三).ppt
- 北方民族大学刑法学(刑法分则)课件 罪刑各论概说.ppt
- 北方民族大学刑法学(刑法学分论)课件 概述.ppt
- 北方民族大学刑法学(刑法学分论)课件 破坏社 会主义市场经济秩序罪.ppt
- 北方民族大学刑法学(刑法学分论)课件 侵犯公民人身权利罪.ppt
- 北方民族大学刑法学(刑法学分论)课件 贪污贿赂罪.ppt
- 北方民族大学刑法学(刑法学分论)课件 危害国 家安全罪.ppt
- 北方民族大学刑法学(刑法学总论)课件 刑法论(二).ppt
- 北方民族大学刑法学(刑法学总论)课件 刑法论(三).ppt
- 北方民族大学刑法学(刑法学总论)课件 刑法论(一).ppt
- 六年级数学下册教学课件《解比例》.pptx
- 8.21.5 鸟类的生殖与发育(课件)八年级生物下册课件(苏教版).pptx
- 钠离子电池项目智能制造方案(范文参考).docx
- 2023-2024学年吉林省吉林市舒兰市七年级(上)期末语文试卷.docx
- 2024年吉林省吉林市丰满区亚桥实验学校中考数学三模试卷.docx
- 2023-2024学年吉林省辽源市东辽县七年级(上)期末英语试卷.docx
- 2023-2024学年吉林四平九年级数学第一学期期末水平检测试卷.docx
- 2023-2024学年吉林市蛟河市三校联考九年级(上)期末英语试卷.docx
- 2023-2024学年吉林松原九年级英语上册考场实战试卷.docx
- 电解液新材料项目智能制造方案.docx
文档评论(0)