三、时间复杂度和空间复杂度

原创 2016年08月29日 12:57:07

高级语言编写的程序的运行时间取决于以下因素:
1. 算法采用的策略、方案
2. 编译产生的代码质量【高级语言写的源代码通过编译器编译成二进制代码】
3. 问题的输入规模
4. 机器执行指令的速度
其中2和4分别取决于计算机软件、硬件,抛去这些,可见程序的运行时间依赖于算法的好坏和问题的输入规模。

分析一个算法的运行时间时,重要的是把基本操作的数量和输入模式关联起来。

函数的渐进增长:f(n)与g(n),若存在一个整数N,使n>N时,f(n)恒大于g(n),则称f(n)的增长渐进快于g(n)。
判断算法的效率时,函数中的常数和其他次要项科研忽略,更应该关注最高次项的阶数。

算法时间复杂度的定义:进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作T(n)=O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中f(n)为问题规模n的某个函数。
这样用大写O()来体现算法时间复杂度的记法,称之为大O记法。
一般情况下,随着输入规模n的增大,T(n)增长最慢的算法为最优算法。

如何分析时间复杂度:
 用常数1取代运行时间中的所有加法常数。
 在修改后的运行次数函数中,只保留最高阶项。
 若最高阶项存在且不是1,则去除与这个项相乘的常数。
 最后得到的结果就是大O阶数。

阶数:
 常数阶O(1)
 线性阶O(n)【非嵌套循环】随着问题n的扩大,对应计算次数呈直线增长。
 平方阶O(n²)【嵌套循环】,循环时间复杂度=循环体的复杂度×该循环的嵌套次数
 对数阶O(log(n))(注:logn指的是以2为底n的对数)
例如:

int i=1,n=100;
While (i<n)
     { 
       i=i*2;
     }

常见时间复杂度还有:nlogn阶,立方阶,指数阶O(2^n)等
耗费时间:

O(1) < O(logn) < O(n) < O(nlogn) < O(n²) < O(n³) < O(2^n)< O(n!) < O(n^n)

最坏情况与平均情况:
 平均运行时间是期望的运行时间。
 最坏运行时间是一种保证,在应用中,这是一种最重要的需求,通常除非特别指定,运行时间都是指最坏运行时间。

算法的空间复杂度:
写代码时可以用空间来换取时间。【判断是否闰年的例子:设计算法与查表】
空间复杂度通过计算算法所需的存储空间实现,计算公式:S(n)=O(f(n)),其中n为问题的规模,f(n)为语句关于n所占存储空间的函数。

通常我们都是用时间复杂度来指运行时间的需求,是用空间复杂度指空间需求。当直接要让我们求复杂度时,通常指的是时间复杂度。

版权声明:本文为博主原创文章,未经博主允许不得转载。

算法的时间复杂度和空间复杂度-总结

算法的时间复杂度和空间复杂度-总结         通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学...
  • XiaoXiaoPengBo
  • XiaoXiaoPengBo
  • 2016年06月04日 11:04
  • 20877

数据结构之时间复杂度和空间复杂度

算法复杂度分为时间复杂度和空间复杂度,一个好的算法应该具体执行时间短,所需空间少的特点。      随着计算机硬件和软件的提升,一个算法的执行时间是算不太精确的。只能依据统计方法对算法进行估算。...
  • lg_gyh
  • lg_gyh
  • 2016年09月06日 18:45
  • 2663

时间复杂度和空间复杂度

算法复杂度分为时间复杂度和空间复杂度。其作用: 时间复杂度是指执行算法所需要的计算工作量; 而空间复杂度是指执行这个算法所需要的内存空间。 (算法的复杂性体现在运行该算法时的计算机所需资源的多...
  • zxm490484080
  • zxm490484080
  • 2017年05月15日 20:38
  • 313

关于计算时间复杂度和空间复杂度

相信学习编程的同学,或多或少都接触到算法的时间复杂度和空间复杂度了,那我来讲讲怎么计算。        常用的算法的时间复杂度和空间复杂度 一,求解算法的时间复杂度,其具体步骤是:   ⑴ 找出算法...
  • yangwei282367751
  • yangwei282367751
  • 2016年09月04日 00:09
  • 14684

算法-时间复杂度和空间复杂度

2.9 算法时间复杂度 2.9.1 算法时间复杂度定义 在进行算法分析时 , 语句总的执行次数 T ( n )是关子问题规模n的函数,进而分析 T ( n )随 n 的变化情况并确定T(n)的数量级...
  • smile_from_2015
  • smile_from_2015
  • 2017年02月23日 21:40
  • 1833

常见排序算法及对应的时间复杂度和空间复杂度

排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。...
  • Gane_Cheng
  • Gane_Cheng
  • 2016年09月25日 00:14
  • 13825

数据结构之时间.空间复杂度分析

在很多数据结构的面试题中看似简单,但是对题目的要求却挺高,主要就体现在复杂度分析方面。复杂度又分为时间复杂度和空间复杂度。 1.时间复杂度 时间复杂度实际就是函数,函数计算执行的基本操作次数 . 在...
  • qq_29503203
  • qq_29503203
  • 2016年09月07日 22:55
  • 1674

算法的时间复杂度和空间复杂度-总结

算法的时间复杂度和空间复杂度-总结         通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学...
  • tercel_zhang
  • tercel_zhang
  • 2016年08月19日 11:57
  • 904

算法的时间复杂度和空间复杂度-总结

算法的时间复杂度和空间复杂度 1、时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法...
  • zolalad
  • zolalad
  • 2013年09月20日 16:01
  • 95297

时间复杂度和空间复杂度 1

算法的时间复杂度和空间复杂度合称为算法的复杂度。 1.时间杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法...
  • u011252685
  • u011252685
  • 2015年04月19日 22:33
  • 557
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:三、时间复杂度和空间复杂度
举报原因:
原因补充:

(最多只允许输入30个字)