时间复杂度的计算问题
来源:互联网 发布:rsyslog linux 编辑:程序博客网 时间:2024/05/16 04:58
时间复杂度
注意的两点:1、只保留高阶项
2、系数直接舍弃
如果是常数,直接为1。
例子:
1、(具体认真的算)
For (i=1;i<=n;++i) // (1+n+n)
For(j=1;j<=n;++j) //(i=1时,j可以为1,2….到n.) (1+n+n)
{
C[i][j]; // n*n
}
最终计算结果为F(n)=3n^2+3n+1 O(f(n))=O(n^2)
2、
for(i=2;i<=n;++i)
For(j=2;j=i-1;++j)
{
++x;
a[i,j]=x;
}只需要算出最重要的部分,最多的部分,也就是执行的总次数
当i=2时,j执行0次;当i=3时,j 执行1次;当i=4时,j执行//2次;当i执行第n 次时,j执行n-2次:
总的次数 2*(0+1+2+(n-2)),2系数可以不要,利用求和公式,
把总次数可以求出来为n^2.整体执行两次,系数可以不算
O(f(n))=O(n^2)
3、
(1)
Int fun(int n)
{
If(n<=1)
{
Return 0;
}
Return fun(n-2)+1;
}
递归:
算出需要计算的次数:
n n-2 n-4 n-6…..n-n=0
为方便计算共有多少次,可以写成 0 2 4 6 8……n,这样可计算出宫经过了1/2n;
O(n)
(2)
Return fun(n-1)+1
需要算出总次数
n n-1 n-2 n-3….n-n
0 1 2 3 4 …..n
总次数为n 次 O(n)
(3)
Return fun(n/2)+1
n n/2 n/4 n/8 n/16 n/32 ……n/n=1
1 2 4 8 16 32…..n
可以写为2的0、1、2、3、4…….n次方
最后只需算出2的x次方等于n 就好
X = log2n
O(log2x)
- 时间复杂度的计算问题
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算。
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- C语言重载宏函数的小技巧
- PAT乙级(Basic Level)练习题 母牛的故事
- python中yield的用法
- EntityFramework Model有外键时,Json提示循环引用 解决方法
- letcode278[easy]--First Bad Version
- 时间复杂度的计算问题
- 洛谷P3391
- 插件化开发之-gradle分包
- 案例-小球自由落体运动
- 算法——跳跃搜索
- 全排列生成的迭代算法
- JAVA CAS原理深度分析
- Linux基础-0002-linux特殊权限
- PLA1.2被拒 Guideline5.2.1被拒 马甲包被拒