- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
算法分析与设计主讲:徐晓蓉邮箱:rortyrong@163.com所在院系:计算机科学与技术学院第2章算法分析基础本章主要内容:第2章算法分析基础第2章算法分析基础第2章算法分析基础第2章算法分析基础第2章算法分析基础第2章算法分析基础第2章算法分析基础第2章算法分析基础第2章算法分析基础第2章算法分析基础第2章算法分析基础第2章算法分析基础第2章算法分析基础*算法复杂度好算法的特征影响程序运行时间的因素如何分析算法的时间复杂度算法分析的渐进表示法使用递推关系分析递归算法2.1算法复杂度算法复杂度:是指运行一个算法所需的时间和空间资源的量.2.1.1什么是好的算法?一个好算法应该具备的特征:正确性:即满足预先规定的功能和性能简单性:算法思路清晰,层次分明,容易理解,易于编码和测试.健壮性:当输入不合法数据时,能适当处理而不引起严重错误高效率低存储:算法应有效使用存储空间,并具有高的时间效率.最优性:算法的执行时间已达到求解该类问题所需时间的下界.2.1算法复杂度算法复杂度:是指运行一个算法所需的时间和空间资源的量.2.1.1什么是好的算法?判断一个算法是否最优的方法:看算法的最坏时间复杂度是否与求解该类问题所需的时间下界相等.如:最大元问题任何通过元素之间的比较的方式来求解此问题的正确算法至少需要进行n-1次元素间的比较,而n-1次元素比较是求最大元问题所需时间的下界,故,任意在最坏情况下只需n-1次元素比较的算法,便是求解该问题的最优算法最优算法不唯一2.1.2影响程序运行时间的因素程序的运行时间:是程序运行从开始到结束所需的时间.影响程序运行时间的因素算法问题规模特定的输入计算机软硬件环境(编译程序,编程语言,CPU运算速度的快慢,内存空间的大小,等等)2.1.3算法的时间复杂度定义:算法运行所需的时间分析方法事先分析:算法运行之前,对它的效率进行分析事后分析:通过运行程序,测试算法实际运行的时间要分析算法的时间复杂度,必须搞清楚以下两个问题:用怎样的一个量来度量算法的时间复杂度(量)给定一个算法,如何具体计算它的复杂性(计算)2.1.3算法的时间复杂度例1:已知整型数组A中含有n个互不相同且已按递增顺序排好序的整数,现要求在数组A中查找某一整数C,若找到,返回相应的下标,若未找到,返回-1.方法:顺序查找法和二分法intsearch(intA[],intn,intC){inti=0;for(i=0;in;i++)if(A[i]==C)break; if(i==n)return-1;elsereturni; }算法1-1:顺序查找分析:当C==A[0]时,只需做1次比较.当C==A[i]时,只需做i+1次比较.当C==A[n-1]时,只需做n次比较.故:最好情况下:Tbest(n)=1;最坏情况下:Tworst(n)=n;算法1-2:二分查找(假定C是A的最后一元)分析:当C==A[mid]时,只需做1次比较.当C==A[n-1]时,需做log2n+1次比较.故:最好情况下:Tbest(n)=1;最坏情况下:Tworst(n)=log2n+1;intb-search(intA[],intn,intC){intlow=0,high=n-1;intmid;while(low=high){mid=(low+high)/2;if(A[mid]==C)returnmid;elseif(A[mid]C)low=mid+1;elsehigh=mid-1;} return-1;}(1)算法时间复杂性的计量:用算法执行基本运算的次数来表示算法的时间复杂度。所谓基本运算:是指算法中最主要最基本的运算与基本运算的次数相关的量:算法问题规模(n)特定输入数据(I).
文档评论(0)