【考研数据结构-专题一】时间复杂度与空间复杂度
算法定义
- 算法是对特定问题求解步骤的描述
- 特性
- 有穷性
- 确定性
- 可行性
- 有输入输出
时间复杂度
-
时间复杂度指算法中所有语句的频度(执行次数)之和
- 记为:T(n) = O(f(n));
- 其中,n是问题规模
- f(n)是问题规模n的某个函数
- 表示随着问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同
- 记为:T(n) = O(f(n));
-
常见的时间复杂度
-
O(1) < O(log2^n) < O(n) < O(nlog2^n) < O(n^2) < O(n^3) < O(2^n) < O(n!)
-
最高阶数越小,说明算法的时间性能越好
-
int sum = 0; // 执行一次 sum = n * (n + 1) / 2; // 执行一次 printf("%d", sum); // 执行一次 // 该算法的执行次数为3 // 时间复杂度为T(n) = O(1),表示不会随n的增长而增长
-
时间复杂度的计算忽略高阶项系数和低阶项
-
空间复杂度
- 空间复杂度S(n)指算法运行过程中所使用的辅助空间的大小
- 记为:S(n) = O(f(n))
行过程中所使用的辅助空间的大小
- 记为:S(n) = O(f(n))