我更喜欢尽可能少的正式定义和简单的数学.
algorithm complexity-theory big-o computer-science time-complexity
大多数拥有CS学位的人肯定会知道Big O代表什么.它可以帮助我们衡量算法的实际效率(如何),如果你知道你试图解决的问题属于哪个类别,你可以弄清楚是否仍然可以挤出那么少的额外性能.1
但我很好奇,你如何计算或近似算法的复杂性?
1 但正如他们所说,不要过度,过早优化是所有邪恶的根源,没有正当理由的优化也应该得到这个名称.
对于家庭作业,我给了以下8个代码片段来分析并给出运行时间的Big-Oh表示法.如果我走在正确的轨道上,有人可以告诉我吗?
//Fragment 1
for(int i = 0; i < n; i++)
sum++;
Run Code Online (Sandbox Code Playgroud)
我想O(N)代表片段1
//Fragment 2
for(int i = 0; i < n; i+=2)
sum++;
Run Code Online (Sandbox Code Playgroud)
对于片段2也是O(N)
//Fragment 3
for(int i = 0; i < n; i++)
for( int j = 0; j < n; j++)
sum++;
Run Code Online (Sandbox Code Playgroud)
片段3的O(N ^ 2)
//Fragment 4
for(int i = 0; i < n; i+=2)
sum++;
for(int j = 0; j < n; j++)
sum++;
Run Code Online (Sandbox Code Playgroud)
片段4的O(N)
//Fragment 5
for(int i = 0; i < n; i++)
for( …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个可以计算函数Big 0的java算法分析工具.理想我想将其作为构建过程的一部分,与我的其他代码度量工具一起使用.即使在谷歌搜索后,我也无法找到任何商业工具的开源.任何建议都会受到欢迎
谢谢