网站大量收购闲置独家精品文档,联系QQ:2885784924

我们更多考虑的是如何优化算法的时间复杂度.ppt

我们更多考虑的是如何优化算法的时间复杂度.ppt

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

算法评价 泰州二附中 谢志锋 什么是算法 算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。 算法的特征 确定性:算法的描述必须无歧义,算法的执行结果是确定的。 可行性:算法中所描述的操作都是可以通过已经实现的基本运行执行有限次来实现。 有穷性:算法必须在有限步后结束。 输入:一个算法必须有零个或多个输入量。 输出:一个算法必须有一个或多个输出量,没有输出的算法是毫无意义的。 算法的描述 自然语言描述 图形描述:如流程图、NS图等。 伪代码描述:包含程序设计语言的三大基本结构及自然语言的一种语言。 类语言描述:类似高级语言的语言,如类C、类Pascal等。 算法的设计要求 正确性 程序不含语法错误; 程序对几组输入数据能够得出满足规格要求的结果; 程序对精心选择的、典型的、苛刻的、带有刁难性的几组输入数据能够得出满足规格要求的结果; 程序对一切合法的输入数据都能产生满足规格要求的结果。 可读性:有助于阅读和交流、有助于对算法的理解、有助于对算法的调试和修改。 高效率和低存储:处理速度快、存储容量小。 算法评价 算法评价主要从算法的正确性、可读性和复杂性三个方面考虑。 正确性是评价算法的首要条件。一个正确的算法是指在合理的输入数据下,能在有限的运行时间内得到正确的结果。 可读性有助于阅读程序、证明算法正确性、便于编写、调试、修改程序。 复杂性分为时间复杂性和空间复杂性,用于评价算法在运行时间和占用空间上的程度。 时间复杂性 算法在计算机中运行需要耗费一定的时间,它大致等同于计算机执行简单操作(如赋值操作、比较操作等)所需的时间与算法中进行简单操作的次数的乘积。 通常我们把算法中所包含的简单操作的次数的多少称为“算法的时间复杂性”。 时间复杂性 x := x+1; for i := 1 to n do x := x+1; for i := 1 to n do for j := 1 to n do x := x+1; for i := 1 to n do for j := 1 to n do begin c[i,j] := 0; for k := 1 to n do c[i,j] := c[i,j] + a[i,k] * b[k,j]; end; 时间复杂性 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间度量记作:T(n)=O(f(n)) 它表示问题规模n的增大、算法执行时间的增长率和f(n)的增长率相同,被称为算法的渐进时间复杂度,简称时间复杂度。 时间复杂性 常见的算法时间复杂度有O(1), O(n), O(log2n), O(nlog2n), O(n2), O(n3), O(2n)等。 当n很大的时候,O(1) O(logn) O(n) O(nlogn) O(n2) O(n3) O(2n) 由于算法的时间复杂度考虑的是对于问题规模n的增长率,在实际计算的时候,一般只需求出它关于n的增长率或阶乘即可,不需要考虑常数项、低阶项和系数。 时间复杂性 for i := 1 to n-1 do for j := 1 to i-1 do x := x+1 语句x := x + 1的执行次数为(n-1)*(n-2)/2 = 0.5n2-1.5n+1 我们在考察其时间复杂度的时候,只看它的最高阶,忽略系数、低阶和常数,因此它的时间复杂度为O(n2)。 时间复杂性 对于大多数算法而言,其时间复杂性会根据输入数据的不同而不同 最佳时间复杂度:根据最优输入数据得到的最小值。 最差时间复杂度:根据最差输入数据得到的最大值。 平均时间复杂度:根据概率、统计计算出来的对所有输入数据的平均值。 时间复杂性 通常情况下,最佳时间复杂度和最差时间复杂度是比较容易得到的,但意义不大。平均时间复杂度计算比较繁琐,但可以比较客观的衡量一个算法所需的运行时间级别。 空间复杂性 算法在运行过程中所占用的存储空间的大小被称为“算法的空间复杂性”。 它包括了算法中变量、常量所占用的存储空间和系统为了实现递归而使用的堆栈空间。 算法的空间复杂性一般也以关于数量规模n的数量级形式给出。 空间复杂性 类似于时间复杂度,我们用空间复杂度作为算法所需存储空间的度量 S(n) = O(f(n)) 复杂度计算举例 编程计算anxn+an-1xn-1+……+a1x+a0的值。 当a0~an和x都已知的情况下,我们很容易写出下面的代码段 复杂度计算举例 复杂度计算举例 从代码中我们可以看到,我们定义了几个简单变量和一个大小为n+1的数组,空间

文档评论(0)

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

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

1亿VIP精品文档

相关文档