时间复杂度
1 | 如果a+b+c=1000,且 a^2+b^2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合? |
第一种方式
1 | 三重循环 |
1 | # -*- coding: utf-8 -*- |
1 | 花费时间为: |

算法的概念
1 | 算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务 |
算法的五大特性
1 | 输入: 算法具有0个或多个输入 |
算法效率衡量
1 | 执行时间反应算法效率 |
时间复杂度与”大O记法”
1 | 我们假定计算机执行算法每一个基本操作的时间是固定的一个时间单位,那么有多少个基本操作就代表会花费多少时间单位 |
如何理解”大O记法”
1 | 对于算法进行特别具体的细致分析虽然很好,但在实践中的实际价值有限 |
最坏时间复杂度
1 | 分析算法时,存在几种可能的考虑: |
时间复杂度的几条基本计算规则
1 | 基本操作,即只有常数项,认为其时间复杂度为O(1) |
第二种方式:
1 | # -*- coding:utf-8 -*- |

算法分析
1 | 第一次尝试的算法核心部分 |
1 | for a in range(0, 1001): |
1 | 时间复杂度为: |
1 | 第二次尝试的算法核心部分 |
1 | for a in range(0, 1001): |
1 | 时间复杂度为 |
常见时间复杂度

1 | 注意,经常将log2n(以2为底的对数)简写成logn |
常见时间复杂度之间的关系

1 | 所消耗的时间从小到大 |
本文作者 : Matrix
原文链接 : https://matrixsparse.github.io/2017/06/05/时间复杂度/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
知识 & 情怀 | 二者兼得