5计算机科学导论数据结构与算法补充资料.ppt

5计算机科学导论数据结构与算法补充资料.ppt

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5计算机科学导论数据结构与算法补充资料.ppt

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 4.2 查找 1.查找的定义与相关概念 查找的相关概念 查找的结果通常有两种可能: 查找成功,即找到满足条件的数据对象。 查找不成功,或查找失败。作为结果,报告一些信息,如 失败标志、失败位置等。 4. 基本算法 4.2 查找 2. 查找算法的效率衡量 衡量一个查找算法的时间效率的标准是:在查找过程中关键字的平均比较次数或平均读写磁盘次数(只适合于外部查找),这个标准也称为平均查找长度ASL(Average Search Length),通常它是查找结构中对象总数 n 或文件结构中物理块总数 n 的函数。 另外衡量一个查找算法还要考虑算法所需要的存储量和算法的复杂性等问题。 在静态查找表中,数据对象存放于数组中,利用数组元素的下标作为数据对象的存放地址。查找算法根据给定值x,在数组中进行查找。直到找到x在数组中的存放位置或可确定在数组中找不到x为止。 4. 基本算法 4.2 查找 3.顺序查找 所谓顺序查找,又称线性查找,主要用于在线性结构中进 行查找。 存储结构: typedef struct{ ElemType *elem; // 元素数据结构 int length; // 查找表长度 } SSTable; 查找过程:从表中最后一个元素开始,顺序用各元素的关键字与给定值x进行比较,若找到与其值相等的元素,则查找成功,给出该元素在表中的位置;否则,若直到第一个记录仍未找到关键字与x相等的对象,则查找失败。 4. 基本算法 4.2 查找 3.顺序查找 算法描述: Search_Seq(SSTable ST, KeyType key){ //顺序查找的算法,0号元素为监视哨 int i; ST.elem[0].key=key; for (i=ST.length; !EQ(ST.elem[i].key,key);--i); return i; } 4. 基本算法 4. 基本算法 4.2 查找 3.顺序查找 顺序查找的平均查找长度: 设查找第 i 个元素的概率为 pi,查找到第 i 个元素所需比较次数为 ci,则查找成功的平均查找长度: 在顺序查找情形,ci = n-i +1, i = 1, ?, n,因此 4.2 查找 4.折半查找 折半查找:先求位于查找区间正中的对象的下标mid,用其关键字与给定值x比较: Element[mid].getKey( ) = x,查找成功; Element[mid].getKey( ) x,把查找区间缩小到表的前半部分,再继续进行对分查找; Element[mid].getKey( ) x,把查找区间缩小到表的后半部分,再继续进行对分查找。 每比较一次,查找区间缩小一半。如果查找区间已缩小到一个对象,仍未找到想要查找的对象,则查找失败。 4. 基本算法 折半查找算法过程: (1)mid= (low+high)/2」 (2)比较 ST.elem[mid].key = = key? 如果 ST.elem[mid].key = = key,则查找成功, 返回mid值 如果 ST.elem[mid].key key,则置high=mid-1 如果 ST.elem[mid].key key,则置low=mid+1 (3)重复计算mid 以及比较ST.elem[mid].key与 key,当lowhigh 时,表明查找不成功,查找结束。 4. 基本算法 查找成功的例子 查找失败的例子 4. 基本算法 第五节 递归 5.1 递归 1.递归的定义 递归:递归是指算法在过程中调用自身作为子算法的一种设计方法。 递归是设计和描述算法的一种有力的工具,它在复杂算法的描述中被经常采用。能采用递归描述的算法通常具有如下特征: 为求解规模为N的问题,设法将它分解成规模较小的问题,然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解

文档评论(0)

love + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档