程序的时间复杂度与空间复杂度该怎么算?

时间复杂度

为什么要有时间复杂度?

第一、在我们的测试环境里面,不同的硬件跑出来的结果是不一样的,比如,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 <

猜你喜欢

转载自blog.csdn.net/wenjing888888/article/details/122468230
今日推荐