[关闭]
@zero1036 2017-01-20T01:12:55.000000Z 字数 912 阅读 1493

时间复杂度与空间复杂度

数据结构与算法


概念

时间频度:一个算法的语句实际执行次数n(含系数),记作T(n)
时间复杂度:一个算法的语句受执行次数n的变化影响最大的一项(不含系数),记作O(n)

时间频度不同,但时间复杂度可能一致:


时间复杂度不处理系数,所以以上两者均为

例子

按数量级递增排列,常见的时间复杂度有:

类型 表达式
常数阶
对数阶
线性阶
线性对数阶
平方阶
立方阶

常数阶

以下三条语句的频度均为1,该程序段的执行时间与问题规模n无关。
故为常数阶,记作: T(n)=O(1)

  1. Temp = i;
  2. i = j;
  3. j = temp;

线性阶

案例:循环了n - 1 ≈ n,就是O(n)

  1. i = 1;
  2. k = 0;
  3. while(i <= n-1){
  4. k += 10 * i;
  5. i++;
  6. }

平方阶

案例一:循环了n*n次,记作:O(n^2)

  1. for(i=1;i<=n;i++) //循环了n*n次,当然是O(n^2)
  2. for(j=1;j<=n;j++)
  3. s++;

案例二:循环了(n+n-1+n-2+...+1)≈(n^2)/2,因为时间复杂度是不考虑系数的,所以也是O(n^2)

  1. for(i=1;i<=n;i++) //循环了(n+n-1+n-2+...+1)≈(n^2)/2,因为时间复杂度是不考虑系数的,所以也是O(n^2)
  2. for(j=i;j<=n;j++)
  3. s++;

案例三:循环了(1+2+3+...+n)≈(n^2)/2,当然也是O(n^2)

  1. for(i=1;i<=n;i++)
  2. for(j=1;j<=i;j++)
  3. s++;

相关数学规律:n^2 恒大于 2n - 1
n^2

对数

定义:如果


即a的x次方等于N(a > 0且a <> 1),那么数x叫做以a为底N的对数,记作

常用公式

对数说明图

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注