静态查找表二叉排序树-公开课件.pptVIP

  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文档。上传文档
查看更多
第九章 查找 教学目的和要求: 了解各种查找算法的思想。 掌握各种查找算法的写法。 重点和难点: 各种查找算法思想。 算法的实现及其时间、空间复杂度分析。 授课时间:6课时 本章将讨论一种在实际中大量使用的数据结构——查找表,它或者基于线性结构构建,或者基于非线性结构构建。 查找表的例子:在电话号码簿中查找某人的电话号码;在字典中查阅某个字词的读音……其中的电话号码簿和字典都可视为查找表。 查找表:用于查找的数据元素集合称为查找表。查找表是由同一类型的数据元素(或记录)构成的集合。由于“集合”中的数据元素之间存在着松散的关系,因此查找表是一种应用灵便的数据结构。 查找表的操作 (1)查询某个“特定的”数据元素是否在查找表中; (2)检索某个“特定的”数据元素的各种属性; (3)在查找表中插入一个数据元素; (4)从查找表中删去某个数据元素。 静态查找表:若对查找表仅作查询和检索操作,则称此类查找表为静态查找表(Static Search Table )。 动态查找表:若在查找过程中同时插入查找表中不存在的数据元素,或者从查找表中删除已存在的某个数据元素,称为动态查找表(Dynamic Search Table)。 关键字:所谓关键字(key),是数据元素(或记录)中某个数据项的值,用它可以标识(或识别)一个数据元素。 主关键字:若此关键字能唯一标识一个记录,则称此关键字为主关键字(Primary Key) 。 次关键字:能够标识多个记录的关键字,称为次关键字。 查找成功:查找表中查找出其关键字等于给定值的数据元素。若表中有这样的元素,则称查找成功 查找不成功:查找表中查找出其关键字等于给定值的数据元素。若表中没有这样的元素,则称查找不成功 9.1 静态查找表 表中数据是固定不变的。 9.1.1 顺序表的顺序查找 以顺序表或链表作为静态查找表,都可以用顺序查找方法来查找元素。我们在这里介绍顺序表的顺序查找。 1、一般的顺序查找 在顺序表v中查找某个元素x是否存在 (1)从前向后查 3、性能分析 平均查找长度的概念:为确定记录在查找表中的位置,需和给定值进行比较的关键字个数的期望值,称为查找算法在查找成功时的平均查找长度。 ①等概率查找 那么这100人共需查找多少次,才能各自找到自己需要的数据? 共需: SL=20*1+20*2+20*3+20*4+20*5 平均查找次数: ASL=SL / 100 =20%*1+20%*2+20%*3+20%*4+20%*5 那么其中的百分数可以理解为查找某个元素的概率。 所以平均查找长度可以用公式表示为: 根据上面式子,等概率查找时, P1=P2=P3=…=Pn=1/n ②非等概率查找 如某人有很多人的联系电话,存放在一个顺序表中,他一定会把联系得最频繁的号码放在最前面,以利于查找。 问题:此时的查找长度如何保证尽量小? 9.1.2 有序表的查找——折半查找 一、折半查找的前提条件 必须是顺序表 顺序表中元素必须是有序的 二、折半查找算法演示 1、查找成功的演示(查找key=21) 1、查找成功的演示(查找key=21) 1、查找成功的演示(查找key=21) 1、查找成功的演示(查找key=21) 1、查找成功的演示(查找key=21) 1、查找成功的演示(查找key=21) 1、查找成功的演示(查找key=21) 1、查找成功的演示(查找key=21) 1、查找成功的演示(查找key=21) 2、查找不成功的演示(查找key=85) 2、查找不成功的演示(查找key=85) 2、查找不成功的演示(查找key=85) 2、查找不成功的演示(查找key=85) 2、查找不成功的演示(查找key=85) 2、查找不成功的演示(查找key=85) 2、查找不成功的演示(查找key=85) 2、查找不成功的演示(查找key=85) 2、查找不成功的演示(查找key=85) 2、查找不成功的演示(查找key=85) 2、查找不成功的演示(查找key=85) 3、算法实现-非递归算法 int BinarySearch(int *A,int n,int e) { int low,high,mid; low=1;high=n; while(1) { mid=(low+high)/2; if(A[mid]==e) { return mid;} else if(A[mid]e) { high=mid-1;} else { low=mid+1;} if(lowhigh) return 0; } } 4、算法分析 4、算法分析 4、算法分析 4、算法分析 如上面演示过程,按照折半查找过程,可以

文档评论(0)

小红帽 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档