知识大全 概论- 算法的描述和分析(三)
Posted 知
篇首语:尺有所短;寸有所长。物有所不足;智有所不明。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 概论- 算法的描述和分析(三)相关的知识,希望对你有一定的参考价值。
( )渐进时间复杂度评价算法时间性能
主要用算法时间复杂度的数量级(即算法的渐近时间复杂度)评价一个算法的时间性能
【例 】有两个算法A 和A 求解同一问题 时间复杂度分别是T (n)= n T (n)= n
( )当输入量n< 时 有T (n)>T (n) 后者花费的时间较少
( )随着问题规模n的增大 两个算法的时间开销之比 n / n =n/ 亦随着增大 即当问题规模较大时 算法A 比算法A 要有效地多
它们的渐近时间复杂度O(n )和O(n )从宏观上评价了这两个算法在时间方面的质量 在算法分析时 往往对算法的时间复杂度和渐近时间复
杂度不予区分 而经常是将渐近时间复杂度T(n)=O(f(n))简称为时间复杂度 其中的f(n)一般是算法中频度最大的语句频度
【例 】算法MatrixMultiply的时间复杂度一般为T(n)=O(n ) f(n)=n 是该算法中语句( )的频度 下面再举例说明如何求算法的时间复
杂度
【例 】交换i和j的内容
Temp=i;
i=j;
j=temp;
以上三条单个语句的频度均为 该程序段的执行时间是一个与问题规模n无关的常数 算法的时间复杂度为常数阶 记作T(n)=O( )
如果算法的执行时间不随着问题规模n的增加而增长 即使算法中有上千条语句 其执行时间也不过是一个较大的常数 此类算法的时间复杂度
是O( )
【例 】变量计数之一
( ) x= ;y= ;
( ) for(k ;k<=n;k++)
( ) x++;
( ) for(i= ;i<=n;i++)
( ) for(j= ;j<=n;j++)
( ) y++;
一般情况下 对步进循环语句只需考虑循环体中语句的执行次数 忽略该语句中步长加 终值判别 控制转移等成分 因此 以上程序段
中频度最大的语句是( ) 其频度为f(n)=n 所以该程序段的时间复杂度为T(n)=O(n )
当有若干个循环语句时 算法的时间复杂度是由嵌套层数最多的循环语句中最内层语句的频度f(n)决定的
【例 】变量计数之二
( ) x= ;
( ) for(i= ;i<=n;i++)
( ) for(j= ;j<=i;j++)
( ) for(k= ;k<=j;k++)
( ) x++;
该程序段中频度最大的语句是( ) 内循环的执行次数虽然与问题规模n没有直接关系 但是却与外层循环的变量取值有关 而最外层循环的
次数直接与n有关 因此可以从内层循环向外层分析语句( )的执行次数
>
则该程序段的时间复杂度为T(n)=O(n / +低次项)=O(n )
( )算法的时间复杂度不仅仅依赖于问题的规模 还与输入实例的初始状态有关
【例 】在数值A[ n ]中查找给定值K的算法大致如下
( )i=n ;
( )while(i>= &&(A[i]!=k))
( ) i ;
( )return i;
此算法中的语句( )的频度不仅与问题规模n有关 还与输入实例中A的各元素取值及K的取值有关:
①若A中没有与K相等的元素 则语句( )的频度f(n)=n;
②若A的最后一个元素等于K 则语句( )的频度f(n)是常数
( )最坏时间复杂度和平均时间复杂度
最坏情况下的时间复杂度称最坏时间复杂度 一般不特别说明 讨论的时间复杂度均是最坏情况下的时间复杂度
这样做的原因是 最坏情况下的时间复杂度是算法在任何输入实例上运行时间的上界 这就保证了算法的运行时间不会比任何更长
【例 】查找算法【例 · 】在最坏情况下的时间复杂度为T(n)= (n) 它表示对于任何输入实例 该算法的运行时间不可能大于 (n)
平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下 算法的期望运行时间
常见的时间复杂度按数量级递增排列依次为 常数 ( ) 对数阶 (log n) 线形阶 (n) 线形对数阶 (nlog n) 平方阶 (n )立方阶 (n
) … k次方阶 (n k ) 指数阶 ( n ) 显然 时间复杂度为指数阶 ( n )的算法效率极低 当n值稍大时就无法应用
类似于时间复杂度的讨论 一个算法的空间复杂度(Space Complexity)S(n)定义为该算法所耗费的存储空间 它也是问题规模n的函数 渐近空
间复杂度也常常简称为空间复杂度 算法的时间复杂度和空间复杂度合称为算法的复杂度
cha138/Article/program/sjjg/201311/23401相关参考
数据的运算通过算法(Algorithm)描述讨论算法是数据结构课程的重要内容之一 算法 非形式地说算法是任意一个良定义的计算过程它以一个或多个值作为输入并产生一个或多个值作为输出 ()一个算
循环语句 WHILE(条件) 语句 DO 语句 WHILE(条件) FOR(初始条件;终结条件;语句) 语句 函数 所有算法以如下函数形式表示
算法 一个算法一般具有下列五个重要特性 有穷性一个算法必须总是在执行有限步之后结束 确定性算法中的每一条指令必须有确切的含义不能产生多义性 可行性算法中的每一条指令必须是切实可行的即原则上是可以
数 据 结 构概论基本概念和术语基本概念和术语(一)习题练习答案概论基本概念和术语(二)学习数据结构的意义学习数据结构的意义算法的描述和分析算法的描述和分析线性表线性表的
在程序设计中常用下列三种不同的出错处理方式 ()用exit语句终止执行并报告错误 ()以函数的返回值区别正确返回或错误返回
为了解决理解与执行这两者之间的矛盾人们常常使用一种称为伪码语言的描述方法来进行算法描述伪码语言介于高级程序设计语言和自然语言之间它忽略高级程序设计语言中一些严格的语法规则与描述细节因此它比程序设计
判断下列各对函数f(n)和g(n)当时n→∞哪个函数增长更快? 试用数学归纳法证明 试写一算法自大至小依次输出顺序读入的三个
算法与数据结构的关系紧密在算法设计时先要确定相应的数据结构而在讨论某一种数据结构时也必然会涉及相应的算法下面就从算法特性算法描述算法性能分析与度量等三个方面对算法进行介绍 算法特性 算法(Al
第章 绪论 简述下列术语数据数据元素数据对象数据结构存储结构数据类型和抽象数据类型 解数据是对客观事物的符号表示在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称
算法分析.评价算法好坏的标准 求解同一计算问题可能有许多不同的算法究竟如何来评价这些算法的好坏以便从中选出较好的算法呢? 选用的算法首先应该是正确的此外主要考虑如下三点①执行算法所耗费的时间②执行