数据结构周屹任义主编第8章课件教学.pptVIP

数据结构周屹任义主编第8章课件教学.ppt

  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文档。上传文档
查看更多
数据结构周屹任义主编第8章课件教学.ppt

第8章 查找 1)理解查找的作用,掌握查找的基本概念; 2)掌握顺序查找,折半查找和索引查找的方法,并能灵活应用; 3)掌握二叉排序树的构造方法,掌握平衡二叉树的旋转平衡方法,掌握B-树的特点以及建立过程; 4)掌握哈希表的构造方法,以及解决冲突的方法; 5)能够计算各种查找方法的平均查找长度; 查找也称为检索。 查找特定数据元素的操作经常涉及到大量数据元素,通常会考虑不同的方法进行操作,以取得较好的效率。效率高的查找方法不仅与算法本身有关,而且与被查找元素的存储结构有关。一个好的算法不是在任何情况下都能充分发挥出优越性,而是有其适用的特定环境。 8.1 查找的基本概念 表:进行查找运算的数据元素通常是同一数据类型的数据元素或记录,由它们构成的集合又称为查找表(表)。 关键字:数据元素的某个数据项的值,用它可以标识表中的一个或一组数据元素。如果一个关键字可以惟一标识表中的一个数据元素,则称其为主关键字,否则为次关键字。当数据元素仅有一个数据项时, 数据元素的值就是关键字。 查找: 根据给定的关键字的值,在特定的表中查找关键字与给定值相同的数据元素,若找到相应的数据元素, 则称查找是成功的,并返回该数据元素在表中的位置。否则称查找是失败的,此时应返回空地址及失败信息,并可根据要求插入这个不存在的数据元素。 查找算法中涉及到三类参量:① 查找对象K(找什么);② 查找范围L(在哪找);③ K在L中的位置(查找的结果)。其中①、②为输入参量,③为输出参量,在函数中,输入参量必不可少,输出参量也可用函数返回值表示。 查找表分为静态查找表和动态查找表。 (1) 静态查找表:仅对查找表进行查找操作,即查找关键字等于给定值的数据元素是否在查找表中,查找前后不能改变表。 (2) 动态查找表:对查找表进行查找操作,可能还要向表中插入数据元素或删除表中数据元素的表。 平均查找长度(ASL):为确定数据元素在表中的位置,所要查找的值与关键字进行比较,比较的次数,称为查找算法在查找成功时的平均查找长度。对于长度为n的表,查找成功时的平均查找长度为: 查找的基本方法可以分为两大类,即比较式查找法和计算式查找法。其中比较式查找法又可以分为基于线性表的查找法和基于树的查找法,而计算式查找法也称为哈希(HASH)查找法。 8.2 静态查找表 静态查找表:仅对查找表进行查找操作,即查找关键字等于给定值的数据元素是否在查找表中,查找前后不能改变表。 8.2.1 顺序查找 基本思想是:从查找表的一端开始,顺序扫描表,依次将扫描到的结点关键字和待查找的值K相比较,若相等,则查找成功,若整个表扫描完毕,仍末找到关键字等于K的元素,则查找失败。图8-1是顺序查找的示意图。 下面给出顺序结构有关数据类型的定义: #define LIST-SIZE 20 typedef struct { KeyType key; OtherType other-data; } RecordType; typedef struct { RecordType r[LIST-SIZE+1]; /* r[0]为工作单元*/ int length; } RecordList; 基于顺序表的算法如下: int SeqSearch(RecordList l, KeyType k) /*在顺序表中顺序查找其关键字等于k的元素,若找到,则函数值为该元素在表中的位置,否则为0*/ { l.r[0].key=k; i=l.length; while (l.r[i].key!=k) i--; return(i); } 假设在每个位置查找的概率相等,即有pi=1/n,由于查找是从后往前扫描,则有每个位置的查找比较次数Cn=1,Cn-1=2,…,C1=n,于是,查找成功的平均查找ASL= = = ,即它 的时间复杂度为O(n)。 这就是说,查找成功的平均比较次数约为表长的一半。若k值不在表中,则必须进行n+1次比较之后才能确定查找失败。另外,从ASL可知,当n较大时,ASL值较大,查找的效率较低。 顺序查找的优点是算法简单,对表结构无任何要求,无论是用向量还是用链表来存放结点,也无论结点之间是否按关键字有序或无序,它都同样适用。顺序查找的缺点是查找效率低,当n较大时,不宜采用顺序查找,而必须寻求更好的查找方法。 8.2.2 折半查找 折半查找法又称为二分法查找法,这种方法要求待查找的表必须是按关键字大小有序排列的顺序表。

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档