时间复杂度的计算
来源:互联网 发布:美工穿什么衣服 编辑:程序博客网 时间:2024/06/18 08:09
如果我们想验证一段代码的效率,一个最直接的办法就是编出来之后运行一下,这个方法称为事后统计方法,但是这个方法存在着非常大的弊端,比如我们需要时间编写代码,而代码写完后如果不符合要求需要重新编写;测试的方法会受到硬件和内存占有率的影响等等。所以为了让代码的评估更加规范和科学,我们更多的使用事前分析估计方法,即计算一个代码的时间复杂度。
其实一段代码的时间复杂度计算很容易,它是一种对计算次数的统计,它有如下几条规则:
1.用常数1取代运算次数中所有的加法常数。
2.只保留最高阶的项。
3.将最高阶的项前面的系数换成1.
这个方法被称之为大O阶方法。
我们通过几个例子看一看上述规则到底如何让使用:
int sunm =0,n=100; //执行1次sum= (1+n)*n/2; //执行1次printf("%d",sum); //执行1次
上面一段代码一共执行3次,但是时间复杂度是O(3)吗,按照规则1,上述代码的时间复杂度应该是O(1)。
int i; //执行1次for (i = 0;i<n;i++) //执行n+1次{ printf("%d",i); //执行n次}
上面一段代码一共执行2n+2次,按照大O阶方法:
2n+2——2n+1
2n+1——2n
2n——n
上述代码的时间复杂度应该是O(n)。
int i,j; //执行1次for (i = 0;i<n;i++) //执行n+1次{ for (j = 0;j<n;i++) //执行n+1次 { printf("%d",i); //执行n*n次 } }
上面一段代码一共执行n*n+2n+3次,按照大O阶方法:
n*n+2n+3——n*n+2n+1
n*n+2n+1——n*n
上述代码的时间复杂度应该是。
int i,j; //执行1次for (i = 0;i<n;i++) //执行n+1次{ for (j = 0;j<m;i++) //执行n+1次 { printf("%d",i); //执行n*m次 } }
上面一段代码一共执行mn+2n+3次,按照大O阶方法:
mn+2n+3——n*n+2n+1
mn+2n+1——mn
上述代码的时间复杂度应该是O(m*n)
int count = 1; //执行1次while(count<n) //执行k+1次{ count = count*2; //执行k次}
k如何计算:,
,所以上述代码共执行
上述代码的时间复杂度应该是
最后给出常见的执行次数函数与其对应的时间复杂度:
常见时间复杂度排序:
阅读全文
2 0
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算。
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 时间复杂度的计算
- 转载的Android studio 结构
- Kafka更新offset,scala反射调用进行测试
- 【算法题】买苹果
- 104-信号引起的竞争错误
- Jedis中hset散列相关操作
- 时间复杂度的计算
- 小Demo--狸菇凉_
- 游戏开发需要懂几种语言?
- 人工智能的可行性分析
- Android校招面试题 —— Android篇
- Android ViewHolder的作用与用法
- LeetCode 231. Power of Two (算法,计算二进制数中1的位数)
- 使用sklearn优雅地进行数据挖掘
- ubuntu安装vue