- 1、本文档共63页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ch1绪论要点
* “基本操作”:该操作重复执行次数和算法的执行时间成正比的原操作。 算法的运行时间由算法中所有语句的频度之和构成。 算法的时间复杂度是由嵌套最深层语句的频度决定的。 §1.4 算法和算法分析 1.4.3 算法效率的度量 该语句重复执行的次数 * 渐进符号(O)的定义:当且仅当存在一个正的常数 C,使得对所有的 n ? n0 ,有 f(n) ? Cg(n),则f(n) = O(g(n)) 定理:若A(n)=amnm+am-1nm-1+?+a1n+a0是一个m次 多项式,则 A(n) = O(nm)。 说明: 在计算算法时间复杂度时,可以忽略所有低次幂 和最高次幂的系数。 §1.4 算法和算法分析 1.4.3 算法效率的度量 * §1.4 算法和算法分析 1.4.3 算法效率的度量 T (n) = O(f(n)) =O( n2) 例1:for (i=1; i=n; i++) for (j=1; j=n; j++) x++; 问题规模:n 基本语句:x++ 问题规模:输入量的多少。 基本语句:是执行次数与整个算法的执行次数成正比的操作指令。 * 例2:分析以下程序段的时间复杂度。 i=1; ① while(i=n) i=i*2; ② 分析:显然,语句①的频度是1。设语句②的频度是f(n),则有: 即f(n)≤log2n,取最大值f(n)=log2n 所以该程序段的时间复杂度 T(n) = 1+f(n) =1+ log2n = O( log2n) §1.4 算法和算法分析 1.4.3 算法效率的度量 * 时间复杂度T(n)按数量级递增顺序为: 注1 空间复杂度S(n)按数量级递增顺序也与上表类同。 复杂度高 复杂度低 §1.4 算法和算法分析 1.4.3 算法效率的度量 * §1.4 算法和算法分析 1.4.3 算法效率的度量 有的情况下,算法中基本操作重复执行的次数还随问题的输入 数据集不同而不同。 除特别指明外,本书中讨论的时间复杂度均指最坏情况下的时间复杂度。 例如:冒泡排序 最好情况下,T(n) = O(1) 最坏情况下,T(n) = O(n2) 对这类算法的分析,一种解决办法是计算平均值,即考虑它对 所有可能的输入数据集的期望值。 但是,很多情况下,各种输入数据集出现的概率难以确定。 * S(n) = O( g(n) ) 表示随着问题规模 n 的增大,算法运行所需存储量的增长率与 g(n) 的增长率相同。 算法的存储量包括: 1.输入数据所占空间; 2.程序本身所占空间; 3.辅助变量所占空间。 §1.4 算法和算法分析 1.4.4 算法的存储空间需求 * 原地工作:若额外空间相对于输入数据量来说是常 数,则称此算法为原地工作。 注:若额外空间所占空间量依赖于特定的输入,则除 特别指明外,均按最坏情况来分析。 若输入数据所占空间只取决与问题本身,和算法无关,则只需要分析除输入和程序之外的辅助变量所占额外空间。 §1.4 算法和算法分析 1.4.4 算法的存储空间需求 * §1.4 算法和算法分析 例1-1 ++x; 例1-2 for (i=1; i=n; ++i)
文档评论(0)