时间复杂度
为什么要有时间复杂度?
第一、在我们的测试环境里面,不同的硬件跑出来的结果是不一样的,比如,i7与i3的机器跑同样的代码花的时间就不一样。
第二、用不同的数据去测试,那么花的时间也是不一样的。
通用公式
所以我们需要一套公式去计算复杂度,通用公式:T = O(N),T表示代码执行的时间,N表示每行代码执行的次数总和,O表示所有代码的执行时间T与每行代码的执行次数总和成正比。(假设每行代码执行的时间是一样的)
O表示代码执行时间随数据规模增长的变化趋势,所以,也叫作渐进时间复杂度(asymptotic time complexity),简称时间复杂度。
开始运用方法:
方法一. 只关注循环执行次数最多的一段代码
int cal(int n) {
int sum = 0;
int i = 1;
for (; i <= n; ++i) {
sum = sum + i;
}
return sum;
}
其中2、3行是常量级别的代码与n的大小无关,所有不用管,执行次数最多的事第4、5行代码,所以我们只管这个两行,时间复杂度是O(n).
方法二、乘法法则,嵌套代码的复杂度等于内外嵌套复杂度的乘积
int cal(int n) {
int ret = 0;
int i = 1;
for (; i <