数据结构01-时空分析
作者:互联网
1、时空分析
1、1时间复杂度分析
我们一般采用大 o 表示法,大 O 复杂度表示法
, 它并不表示代码执行真正需要的时间 , 而是一种随着数据规模增长的趋势。也就是我们考虑的是执行时间的上界。
//example:
int cal(int n)
{
int sum = 0; //执行一次
int i = 1; //执行一次
for (; i <= n; ++i) //执行n次
{
sum = sum + i;//执行n次
}
return sum; //执行一次
}
//总的执行时间就是 T = 3T(1) + 2T(n)
//因为我们只是估算一个增长趋势, 而常数和系数不会对增长趋势产生什么影响, 所以可以简写为 f(n) = n
//当 n 足够大的时候,整个 T 就趋向于 f(n)
则有 T(n) = O(n) , 即表示: 代码执行时间T(n)和代码执行次数f(n)成正比
如何快速估算一段代码的时间复杂度呢
1, 只关注循环执行次数最多的一段代码
2, 总的复杂度 = 复杂度量级最高的那段代码的复杂度
3, 嵌套代码的复杂度 = 嵌套内外代码复杂度的乘积
1、2常见的时间复杂度
O(1)
O(logn)
O(n)
O(nlogn)
O(n^2)
i = 1;
while (i <= n)
{
i = i * 3;
}
计算方式:看循环终止时,关键语句执行次数
\[i = 3^x = n \]\[x = logn \]即 i = i *3 执行 logn 次,那么时间复杂度就是 T = O(logn)
1、3空间复杂度分析
空间复杂度全称是渐进空间复杂度, 表示算法的存储空间和数据规模之间的增长关系
常用的空间复杂度量级有O(1), O(n), O(n^2)
标签:执行,01,int,复杂度,时间,logn,时空,数据结构,代码 来源: https://www.cnblogs.com/SuHaiHome/p/16103719.html