程序时间复杂度计算与分析
程序的时间复杂度是衡量算法在最坏情况下运行时间随输入规模增长的变化趋势的数学表示。它描述了算法执行时间与输入数据规模之间的关系,通常用大O符号(O-notation)表示。
1. 为什么要研究时间复杂度?
- 预测算法性能:帮助预估算法处理大规模数据时的效率
- 比较算法优劣:为算法选择提供理论依据
- 优化程序:识别代码中的性能瓶颈
2. 时间复杂度的计算规则
基本规则:
- 忽略常数项:O(2n) → O(n)
- 保留最高阶项:O(n² + n) → O(n²)
- 忽略系数:O(3n²) → O(n²)
常见结构计算方法:
-
顺序结构:相加(取最大项)
statement1; # O(1) statement2; # O(n) # 总复杂度:O(1) + O(n) = O(n)
-
循环结构:
-
单层循环:循环次数 × 循环体复杂度
for i in range(n): # n次 op(); # O(1) # 总复杂度:O(n)
-
嵌套循环:各层循环次数的乘积
for i in range(n
-