算法的时间复杂度,算法的空间复杂度与时间复杂度

2024-05-0905:32:26综合资讯0

算法所需的运算次数以输入大小 `n` 的函数表示,记为 `T(n)`。

存在常量 `c` 和函数 `f(n)`,使得当 `n` 大于等于 `c` 时,`T(n) ≤ f(n)`,即 `T(n) = O(f(n))`。

算法的时间复杂度衡量算法的运行时间,表示为 `T(n) = O(f(n))`,其中 `f(n)` 描述了随着输入大小 `n` 增加,算法执行时间增长的速率。

对于算法 `T(n)`,其时间复杂度为 `O(f(n))`,则可以通过忽略最高项的系数并保留最高次项得到函数 `f(n)`。

从内向外分析算法的时间复杂度,从最深的嵌套层开始。遇到函数调用时,将其展开分析。

  1. 循环时间复杂度 = 循环次数 `m` × 循环体时间复杂度 `n`,即 `O(m n)`
  2. 多重循环:复杂度为内循环×中循环×外循环时间复杂度,即 `O(n a b c...)`
  3. 顺序执行:时间复杂度为最大语句或算法的时间复杂度。
  4. 条件判断:时间复杂度为各条路径中最大时间复杂度的和。

常见时间复杂度(从小到大排列):

`O(1)` < `O(log n)` < `O(n)` < `O(n log n)` < `O(n²)` < `O(n³)` < `O(2n)` < `O(n!)`