算法设计与分析 第2版 配套课件.pptx

算法设计与分析 第2版 配套课件.pptx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共1252页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与分析(第2版) 配套课件;第1章 概述 ;  算法是求解问题的一系列计算步骤,用来将输入数据转换成输出结果 :;算法设计应满足以下几条目标:;  【例1.1】以下算法用于在带头结点的单链表h中查找第一个值为x的结点,找到后返回其逻辑序号(从1计起),否则返回0。分析该算法存在的问题。;解:问题:;算法具有以下5个重要特征:;【例1.2】有下列两段描述:;  解:(1)是一个死循环,违反了算法的有限性特征。(2)出现除零错误,违反了算法的可行性特征。;1.1.2 算法描述;  通常用函数的返回值表示算法能否正确执行。   有时当算法只有一个返回值或者返回值可以区分算法是否正确执行时,用函数返回来表示算法的执行结果,另外还可以带有形参表示算法的输入输出。;  在C语言中调用函数时只有从实参到形参的单向值传递,执行函数时若改变了形参而对应的实参不会同步改变。 ;  为此C++语言中增加了引用型参数的概念,引用型参数名前需加上&,表示这样的形参在执行后会将结果回传给对应的实参。上例采用C++语言描述算法如下所示。 ;;1.1.3 算法和数据结构;1.1.4 算法设计的基本步骤;  算法分析是分析算法占用计算机资源的情况。   所以算法分析的两个主要方面是分析算法的时间复杂度和空间复杂度。;1.2.1 算法时间复杂度分析;  设n为算法中的问题规模,通常用大O、大?和?等三种渐进符号表示算法的执行时间与n之间的一种增长关系。 ;2. 渐进符号(O、?和?);  大O符号用来描述增长率的上界,表示f(n)的增长最多像g(n) 增长的那样快,也就是说,当输入规模为n时,算法消耗时间的最大值。这个上界的阶越低,结果就越有价值,所以,对于10n2+4n+2,O(n2)比O(n4) 有价值。 一个算法的时间用大O符号表示时,总是采用最有价值的g(n)表示,称之为“紧凑上界”或“紧确上界”。  一般地,如果f(n)=amnm+am-1nm-1+…+a1n+a0,有f(n)=O(nm)。;  定义2(大?符号),f(n)= ?(g(n))(读作“f(n)是g(n)的大?”)当且仅当存在正常量c和n0,使当n≥n0时,f(n)≥cg(n),即g(n)为f(n)的下界。;  大?符号用来描述增长率的下界,表示f(n)的增长最??像g(n) 增长的那样快,也就是说,当输入规模为n时,算法消耗时间的最小值。 与大O符号对称,这个下界的阶越高,结果就越有价值,所以,对于10n2+4n+2,?(n2)比?(n) 有价值。一个算法的时间用大?符号表示时,总是采用最有价值的g(n)表示,称之为“紧凑下界”或“紧确下界”。   一般地,如果f(n)=amnm+am-1nm-1+…+a1n+a0,有f(n)=?(nm)。;  定义3(大?符号),f(n)= ?(g(n))(读作“f(n)是g(n)的大?”)当且仅当存在正常量c1、c2和n0,使当n≥n0时,有c1g(n)≤f(n)≤c2g(n),即g(n)与f(n)的同阶。;【例1.3】分析以下算法的时间复杂度:;3. 算法的最好、最坏和平均情况;  算法的最好情况为:G(n)=      ,是指算法在所有输入I下所执行基本语句的最少次数。   算法的最坏情况为:W(n)=      ,是指算法在所有输入I下所执行基本语句的最大次数。; 【例1.4】采用顺序查找方法,在长度为n的一维实型数组a[0..n-1]中查找值为x的元素。即从数组的第一个元素开始,逐个与被查值x进行比较。找到后返回1,否则返回0,对应的算法如下:;  解:(1)算法的while循环中的if语句是基本语句。a数组中有n个元素,当第一个元素a[0]等于x,此时基本语句仅执行一次,此时呈现最好的情况,即G(n)=O(1)。   当a中最后一个元素a[n-1]等于x,此时基本语句执行n次,此时呈现最坏的情况,即W(n)=O(n)。;  对于其他情况,假设查找每个元素的概率相同,则P(a[i])=1/n(0≤i≤n-1),而成功找到a[i]元素时基本语句正好执行i+1次,所以:;  (2)当被查值x在数组a中的概率为q时,算法执行有n+1种情况,即n种成功查找和一种不成功查找。   对于成功查找,假设是等概率情况,则元素a[i]被查找到的概率P(a[i])=q/n,成功找到a[i]元素时基本语句正好执行i+1次。   对于不成功查找,其概率为1-q,不成功查找时基本语句正好执行n次。   所以:;4. 非递归算法的时间复杂度分析;【例1.6】给出以下算法的时间复杂度。;5. 递归算法的时间复杂度分析;【例1.7】有以下递归算法:;  解:设调用mergesort(a,0,n-1)的执行时间为T(n),由其执行过程得到以下

文档评论(0)

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

本文库主要涉及建筑、教育等资料,有问题可以联系解决哦

版权声明书
用户编号:5213302032000001

1亿VIP精品文档

相关文档