数据结构教学课件8p.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文档。上传文档
查看更多
第八章 查找 8.1 查找的基本概念 8.2 顺序表查找 8.3 索引查找 8.4 树表查找 8.5 散列表查找 8.查找的基本概念 1.查找表 查找表(Search Table)是由记录序列组成的文件或线性表。 2.查找表上常见的操作 (1)查询某个“特定的”记录是否在查找表中;(2)检索某个“特定的”记录的信息;(3)在查找表中插入记录;(4)在查找表中删除记录。根据在查找表上实施的操作不同,可将查找表分为。 3.静态查找表和动态查找表 静态查找表只做前两项统称为“查找”的操作,在查找的过程中不再动态地改变查找表,即不做插入和删除记录的操作;动态查找表的表结构本身是在查找过程中动态生成的,即在查找过程中同时插入查找表中不存在的记录,或者从表中删除已经存在的某个记录。 4.查找依据:一般是把记录的关键字作为查找的依据 5.查找(Search)的定义:给定某个特定值k,在查找表中找出关键字等于给定值k的记录,若找到,则查找成功,返回该记录在表中的序号;否则查找不成功,给出查找失败的信息。 6.评价查找算法的效率 平均查找长度ASL(Average Search Length),其计算公式为: 其中,n是记录的个数;Ci是找到第i个记录需要进行的比较次数;Pi是查找第i个记录的概率,这里P1=P2=…=Pi=…=Pn=1/n。 7.查找表常用的存储方式:顺序、链接、索引和散列四种来存储。本章共介绍了四类查找方法,即顺序表查找、索引查找、树表查找、散列表查找。 8.2顺序表查找 顺序存储结构存储的查找表,就是顺序表。 顺序表的存储结构用C语言描述如下: #define N 100 typedef struct { KeyType key; DataType other; } RecType ; RecType R[N+1]; N是记录的个数;R[0]闲置的主要原因为: (1)使下标和记录序号对应; (2)留作他用,比如用作监视哨。 基于顺序表的查找两种方法:顺序查找和二分查找 8.2.1顺序查找 顺序查找(Sequential Search)又称线性查找,是最简单、最基本的查找方法。 顺序查找的基本思想是:从表的一端开始,依次将每个记录的关键字与给定值k进行比较,若某个记录的关键字与k相等,表明查找成功,并给出记录在表中的位置(序号);若整个表检测完,仍未找到与k相等的关键字,表明查找失败,给出查找失败的信息。 顺序查找算法的C函数如下 : int seqSearch(RecType R[ ], KeyType k) /*在数组R中顺序查找关键字等于k的记录,若找到返回记录序号,否则返回0*/ { int i; R[0].key = k; /*R[0]用作监视哨*/ i=N; /*从表的尾端向前查找 */ while(R[i].key!=k) i--; return i; } 顺序查找算法的性能分析 平均查找长度 查找成功时,平均查找长度为: 查找不成功时,与关键字的比较次数总是n+1次。 查找算法的平均时间复杂度O(n)。 优缺点 优点是算法简单,可以方便地插入记录。 缺点是当n很大时,平均查找长度较大,查找效率较低。 顺序查找方法不仅适用于顺序表,也同样适合于单链表。 8.2.2 二分查找 二分查找(Binary Search)又称折半查找,是一种效率较高的查找方法。二分查找要求顺序表是有序表 二分查找的基本思想是:初始时,查找区间为整个有序表,取查找区间的中间记录作为比较对象,若中间记录的关键字与给定值相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的前半区继续查找;若给定值大于中间记录的关键字,则在中间记录的后半区继续查找。不断重复上述查找过程,直至新区间中间记录的关键字等于给定值,则查找成功,或者查找区间不断缩小直到为空,表明查找失败。 二分查找的具体查找步骤为: (1)设变量low和high表示查找区间的起始和终端下标,初始时查找区间是R[1]~R[N],low取值为1,high取值为N。设变量mid表示查找区间中间位置的下标,计算公式:mid=? (low+hign)/2? (2)当low≤high(查找区间非空)时,求mid=? (low+hign)/2?,进行如下比较: 若k==R[mid].key,查找成功,返回记录在表中位置 若kR[mid].key,则high=mid-1,在前半区继续查找 若kR[mid].key

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档