美文网首页
1.度量算法效率的方法

1.度量算法效率的方法

作者: 芝麻酱的简书 | 来源:发表于2018-07-12 18:10 被阅读39次

时间复杂度:

在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)n的变化情况并确定T(n)的数量级。

算法的时间复杂度,也就是算法的时间量度,记做T(n)=O(f(n))
他表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简称为时间复杂度。其中,f(n)是问题的规模n的某个函数。

这样用大写字母O来体现算法时间复杂度的记法,常称之为大O记法

如何推导时间复杂度:
  • 用常数1来取代运行时间中所有加法常数,如:1+2+3 = 1,记为O(1)
  • 在修改后的运行次数函数中,只保留最高阶项,如:n+n^2 = n^2,记为O(n^2)
  • 如果最高阶项存在且不是1,则去除与这个项相乘的常数,如:3n^2 = n^2,记为O(n^2)
计算下面程序的时间复杂度:

例题1:

int a = 0;
int b = 0;
int c = a + b;
printf("hello world");

答案:O(1)

例题2:

for (int i = 0 ; i < 100; i++) {
}

答案:O(n)

例题3:

for (int i = 0 ; i < 100; i++) {
  for (int j = 0 ; j < 100; j++) {
  }
}

答案:O(n^2)

例题4平方阶:

for (int i = 0 ; i < 100; i++) {
  for (int j = i ; j < i; j++) {
  }
}

//分析:执行次数 = n + (n-1) + (n-2) +...+1 = n * (n + 1) / 2 = (n^2) / 2 + n / 2

答案:O(n^2)

例题5对数阶:

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

//分析:退出条件是2*x == n,可以得到x = log(2)n -- 以2为底,n的对数

答案:O(logn)


空间复杂度:

算法的空间复杂度:通过计算算法所需的存储空间实现,算法的空间复杂度的计算公式记为:S(n) = O(f(n)),其中,n为问题的规模,f(n)为语句关于n所占存储空间的函数。

相关文章

  • 1.度量算法效率的方法

    时间复杂度: 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确...

  • 《大话数据结构》学习笔记

    <大话数据结构> 2.7 算法效率的度量方法 事后统计方法 事前分析估算方法:1.算法采用的策略、方法2.编译产生...

  • 算法与数据结构-时间复杂度

    1、算法效率的度量方法 “刚才我们提到设计算法要提高效率。这里效率大都指算法的执行时间。那么我们如何度量一个算法的...

  • 2.时间复杂度和空间复杂度

    1.算法好坏的度量方法 事后统计方法:用设计好的测试程序和数据,对完成的算法进行测试,从而确定算法效率的高低 事先...

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

    算法的时间复杂度和空间复杂度 一、算法效率的度量方法 1.事后统计方法 这种方法主要是通过设计好的测试程序和数据,...

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

    一、算法效率的度量方法 1.事后统计方法 这种方法主要是通过设计好的测试程序和数据,利用计算机计时器对不同算法编制...

  • 数据结构和算法 1-3 时间复杂度和空间复杂度

    算法的效率一般指算法的运行时间。 算法效率的度量方法。 算法采用的策略、方案 编译产生的代码质量 问题的输入规模 ...

  • 笔记之算法

    本章内容:算法的定义,特性,算法设计的要求,算法效率的度量方法,算法时间复杂度,算法空间复杂度 一.算法基础 1....

  • 2.3算法效率的度量方法

    1.事后统计方法:这种方法主要是通过设计好的测试程序和数据,利用计算机对不同算法编制的程序的运行时间进行时间比较,...

  • 《大话数据结构》读后总结(四)

    一、算法 1、算法效率的度量方法 1.1 事后统计方法 通过设计好的测试程序和数据,利用计算机计时器对不同算法编制...

网友评论

      本文标题:1.度量算法效率的方法

      本文链接:https://www.haomeiwen.com/subject/ieirpftx.html