算法201401-引论.ppt

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

特征方程、特征根 例2 特征方程的根为: 通解为: 由初始条件得到: 解:对应的特征方程为 特征方程、特征根 解得 因此 递归关系的求解-递推 例3 解: 1 分别利用生成函数法及特征方程法求Fibonacci序列的通项 2 计算如下C语言描述的嵌套循环中laugh++语句的执行次数: for(i=1;i<=n;i*=2) for(j=1;j<=i;j++) laugh++ ; 3 对算法1.1 冒泡排序 输入:待排序数组A,其中有n个元素; 输出:排好序的数组A。 bubblesort(float A[], int n) { int i,j; for (i=0; i<n; i++) for (j=n-1; j>i; j--) if (A[j]<A[j-1]) swap(A[j], A[j-1]); } 1)什么时候算法执行的赋值的次数最少?最少多少次? 2)什么时候算法执行的赋值的次数最多?最多多少次? 算法1.3 求最大公约数的辗转相除法 输入:两整数m和n; 输出:m和n的最大公约数。 int gcd(int m, int n){ int a=max{m,n}; int b=min{m,n}; int c; while (b!=0) { c=a mod b; a=b; b=c; } return ( ); } a 算法1.4 求最大公约数的递归算法 输入:两整数m和n; 输出:m和n的最大公约数。 int gcd(int m, int n){ int a=max{m,n}; int b=min{m,n}; int c; if (b == 0) return (a); else { c=a mod b; return( gcd(b,c) ); } gcd(a,b)= gcd(b,a mod b) 算法复杂度分析 Q1:如何评价一个算法的优劣? Q2:算法转化为程序运行后,影响程序运行的因素有哪些? Q3:如何避免客观因素的影响呢? Q4:为什么渐进时间复杂度? 正确性 时空特性 时空效率 算法稳定性、健壮性、实现难度 算法分析 1)能够终结;2)得到合理结果 速度是算法的灵魂 Come up with a real-world problem in which only the best solution will do. Then come up with one in which a solution that is “approximately” the best is good enough. 时间复杂度概念 时间频度T(n) 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。 一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。 一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)。 时间复杂度计算表示 假设f(n)为某算法的计算时间,n是问题的大小,g(n)是事先确定的简单函数,如:nm, 2n, n!。 定义1-1 如果存在两个正常数c和n0,对所有n≧n0,有 |f(n)|≦c|g(n)| 则记作:f(n)=O(g(n)), O为数量级(阶数), g(n)是计算时间f(n)的一个上界函数, f(n)的数量级是g(n) 。 定理1-1 若 是一个m次多项式,则 证明:(?) 说明:变量n的阶数为m的多项式与其最高阶同阶。 时间复杂度计算表示 定义1(2)(下界函数)如果存在两个正常数c和n0,对所有n≧n0,有 |f(n)|≧c|g(n)| 则记作:f(n)= (g(n)), g(n)是计算时间f(n)的一个下界函数。 定义1(3)(双界函数)如果存在两个正常数c1,c2和n0,对所有n≧n0,有 则: 说明: g(n)既是计算时间f(n)的一个下界函数也是一个上界函数。 时间复杂度计算表示 两个函数阶数的比较方法有如下结论: 假设 有下列情况: (1)如果L=a,a是有限正常数,则 ; (2)如果L=0,则 f(n)的阶数比g(n)低(<); (3)如果

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档