第二章 算法分析基础PPT.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文档。上传文档
查看更多
第二章 算法分析基础PPT

算法分析与设计 主 讲:徐晓蓉 邮 箱:rortyrong@163.com 所在院系:计算机科学与技术学院 第2章 算法分析基础 本章主要内容: 算法复杂度 好算法的特征 影响程序运行时间的因素 如何分析算法的时间复杂度 算法分析的渐进表示法 使用递推关系分析递归算法 第2章 算法分析基础 2.1算法复杂度 算法复杂度:是指运行一个算法所需的时间和空间资源的量. 2.1.1 什么是好的算法? 一个好算法应该具备的特征: 正确性:即满足预先规定的功能和性能 简单性:算法思路清晰,层次分明,容易理解,易于编码和测试. 健壮性:当输入不合法数据时,能适当处理而不引起严重错误 高效率低存储:算法应有效使用存储空间,并具有高的时间效率. 最优性:算法的执行时间已达到求解该类问题所需时间的下界. 第2章 算法分析基础 2.1算法复杂度 算法复杂度:是指运行一个算法所需的时间和空间资源的量. 2.1.1 什么是好的算法? 判断一个算法是否最优的方法:看算法的最坏时间复杂度是否与求解该类问题所需的时间下界相等. 如:最大元问题 任何通过元素之间的比较的方式来求解此问题的正确算法至少需要进行n-1次元素间的比较,而n-1次元素比较是求最大元问题所需时间的下界,故,任意在最坏情况下只需n-1次元素比较的算法,便是求解该问题的最优算法 最优算法不唯一 第2章 算法分析基础 2.1.2 影响程序运行时间的因素 程序的运行时间:是程序运行从开始到结束所需的时间. 影响程序运行时间的因素 算法 问题规模 特定的输入 计算机软硬件环境(编译程序,编程语言, CPU运算速度的快慢,内存空间的大小,等等) 第2章 算法分析基础 2.1.3 算法的时间复杂度 例1:已知整型数组A中含有n个互不相同且已按递增顺序排好序的整数,现要求在数组A中查找某一整数C,若找到,返回相应的下标,若未找到,返回-1. 方法:顺序查找法和二分法 int search(int A[],int n,int C) { int i=0; for(i=0;in; i++) if (A[i]==C) break; if(i==n) return -1; else return i; } 算法1-1:顺序查找 分析: 当C==A[0]时,只需做1次比较. 当C==A[i]时,只需做i+1次比较. 当C==A[n-1]时,只需做n次比较. 故:最好情况下:Tbest(n)=1; 最坏情况下:Tworst(n)=n; 第2章 算法分析基础 算法1-2:二分查找 (假定C是A的最后一元) 分析:当C==A[mid]时,只需做1次比较. 当C==A[n-1]时,需做log2n+1次比较. 故:最好情况下:Tbest(n)=1; 最坏情况下:Tworst(n)= log2n+1 ; int b-search(int A[],int n,int C) { int low=0,high=n-1; int mid; while(low=high) { mid=(low+high)/2; if(A[mid]==C) return mid; else if(A[mid]C) low=mid+1; else high=mid-1; } return -1; } (1)算法时间复杂性的计量:用算法执行基本运算的次数来表示算法的时间复杂度。 所谓基本运算:是指算法中最主要最基本的运算 与基本运算的次数相关的量: 算法 问题规模(n) 特定输入数据(I). 时间复杂度T(n,I):为基本运算的次数 时间复杂度有三种: 最坏时间复杂度:W(n)= 最好时间复杂度B(n)= 平均时间复杂度A(n)= 其中:Dn:规模为n的所有合法输入的集合,I*:Dn中达到W(n)的输入:Dn中达到B(n)的输入,P(I):出现输入为I的概率. 第2章 算法分析基础 (2)如何计算某一算法的时间复杂度? 举例: 顺序查找算法的平均时间复杂度 1,确定基本运算为比较运算; 2,计算基本运算的次数: 假设C在数组A中,且C为数组A中每一个元

文档评论(0)

erfg4eg + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档