标签:执行 01 int 复杂度 时间 logn 时空 数据结构 代码
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。