为什么要复杂度分析?
- 不依赖测试环境
- 不受数据量影响
大 O 复杂度表示法
算法执行效率
算法代码执行时间
复杂度公式 T(n)=O(f(n))
解释:
- T(n) 表示代码执行时间,n 表示数据规模大小
- f(n) 表示每行代码执行的次数总和
- O 表示代码的执行时间 T(n) 和 f(n) 表达式成正比
大 O 时间复杂度实际上并不代表代码真正的执行时间而是表示代码执行时间随数据规模增长的变化趋势,所以也叫 渐进时间复杂度,简称 时间复杂度
时间复杂度分析
- 只关注循环执行次数最多的一段代码
- 加法法则:总复杂度等于量级最大的那段代码的时间复杂度
- 乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积
O(1)
- 是常量级时间复杂度的一种表达方法,不是只执行了一行代码
- 只要算法中不存在循环语句、递归语句,即使有成千上万行代码,时间复杂度也是 O(1)
int i = 8;
int j = 6;
int sum = i + j;
O(logn)、O(nlogn)
i=1;
while (i <= n) {
i = i * 2;
}
变量 i 的值从1开始,每循环一次就乘以2。当大于 n 时,循环结束