【发布时间】:2020-08-03 19:01:53
【问题描述】:
我是一名计算机科学专业的学生,我必须编写对不同的大 O 算法执行的分析。为了方便我们,我们的教授给了我们一些方法来覆盖来监控我们实现的时间。
第一种方法应该包含所分析的 Big O 算法的实现,而第二种方法应该包含标准的“控制”行。
例如,二次时间:
public void method1(int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
analyser();
}
}
}
控制:
public int method2(int n) {
return n*n;
}
现在是对数函数:
public void method1(int n) {
for (int i = 1; i < n; i = i*2) {
analyser();
}
}
@Override
public int method2(int n) {
return (int) Math.log(n);
}
不幸的是,第二种方法返回无限值,我不明白为什么。我可以使用任何其他简单的计算来代替Math.log(n) 用作“控制”来比较两种方法的时间?
谢谢。
【问题讨论】:
标签: java algorithm performance big-o