时间复杂度和空间复杂度

原创 2015年07月07日 14:24:26

时间复杂度的定义:

一 般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大 时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n))为算法的渐进 时间复杂度(O是数量级的符号),简称时间复杂度。

计算方法:

1) 算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n)),随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。

2) 在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语句确定它的执行次数,再找出T(n)的同数量级(它的同数量级有以下:1,Log2n,n ,nLog2n ,n的平方,n的三次方,2的n次方,n!),找出后,f(n)=该数量级,若T(n)/f(n)求极限可得到一常数c,则时间复杂度 T(n)=O(f(n))

3) 对于f(n),忽略其常量、低次幂和最高次幂的系数,得到最高次幂的数量级即可。更简便的方法是找最内层循环语句执行次数的数量级。

例:

<span style="font-size:12px;">  for(i=1;i<=n;++i)
  {
	  for(j=1;j<=n;++j)
	  {
		  c[ i ][ j ]=0; //该步骤属于基本操作执行次数:n^2(n的平方)
		  for(k=1;k<=n;++k)
		  	c[ i ][ j ]+=a[ i ][ k ]*b[ k ][ j ]; //该步骤属于基本操作 执行次数:n^3
	  }
  }</span>

根据上面的方法,我们可以确定 n^3 为T(n)的同数量级,则该算法的 时间复杂度:T(n)=O(n^3)


空间复杂度的定义:

类似于时间复杂度的讨论,一个算法的空间复杂度(SpaceComplexity)S(n)定义为该算法所耗费的存储空间,它也是问题规模n的函数。渐近空间复杂度也常常简称为空间复杂度。记作S(n)=O(f(n)),其中n为问题的规模,S(n)表示空间复杂度。

计算方法:

当 一个算法的空间复杂度为一个常量,即不随被处理数据量n的大小而改变时,可表示为O(1);当一个算法的空间复杂度与以2为底的n的对数成正比时,可表示 为0(10g2n);当一个算法的空I司复杂度与n成线性比例关系时,可表示为0(n).若形参为数组,则只需要为它分配一个存储由实参传送来的一个地址 指针的空间,即一个机器字长空间;若形参为引用方式,则也只需要为其分配存储一个地址的空间,用它来存储对应实参变量的地址,以便由系统自动引用实参变量。


排序算法中的复杂度



相关文章推荐

各种排序算法的时间/空间复杂度稳定性

原文链接1,感谢原作者 1.冒泡排序:n*n。 俩个for循环决定其时间复杂度为n^2 template class T> void Swap(T A[], int i, in...

链表的java实现与时间和空间复杂度分析

今天主要编写了链表,其具体代码如下:import edu.princeton.cs.algs4.StdIn; import edu.princeton.cs.algs4.StdOut;public c...

各种排序的时间、空间复杂度

排序算法 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 分类 在计算机科学所使用的排序算法通常被分类为: 计算的复杂度(最差、平均、和最好表...
  • B_zhang
  • B_zhang
  • 2011年09月09日 10:25
  • 930

程序的时间和空间复杂度

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

简析时间/空间复杂度

一、 概念的引入 对于一个问题有很多种算法,那么如何衡量哪一种方法最有效呢?一般从两个方面来衡量:一个是时间效率,即算法处理数据时所花费的时间,用时间复杂度来衡量;另一个是空间效率,即算法所...
  • LP9127
  • LP9127
  • 2016年11月29日 17:19
  • 120

算法的时间与空间复杂度

算法的时间与空间复杂度 一、算法的时间复杂度 1、算法的执行时间和频度 !*首先明确一下一些专业术语的概念 *算法的执行时间=所有语句执行时间的总和 *语句执行时间=...
  • liyuru4
  • liyuru4
  • 2016年06月18日 22:28
  • 401

各种排序算法及时间&空间复杂度详解(一)简单排序算法

排序 排序算法的稳定性 假设ki = kj(i 各种排序算法介绍 本文一共介绍7种排序算法,按照算法的复杂度分为两大类,冒泡排序、简单选择排序和直接插入排序属于简单算法,而希尔排序、堆排序、...

大话数据结构学习之(一) 时间空间复杂度

推导大O阶: 1、用常数1取代运行时间中所有的加法

如何实现在O(n)时间内排序,并且空间复杂度为O(1)

如何实现在O(n)时间内排序,并且空间复杂度为O(1)
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:时间复杂度和空间复杂度
举报原因:
原因补充:

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