【发布时间】:2013-12-08 10:18:01
【问题描述】:
好的,所以我不知道 Big-Oh 是什么,因为我发誓我的教授没有介绍它,我需要尽快帮助我认为很简单的事情。我知道它的答案,但她想要它的代码,我不知道如何编译它。基本上,我用谷歌搜索了这个帮助,他们只是简单地得到了答案,没有一个如何得到它的例子,或者他们有 n = 1000 或其他东西,但我没有在提示中看到或者 n 应该等于。我希望有人能理解我。 请给点建议?哈哈。
这是提示:
1) 根据 Big-Oh 表示法中的变量 n,在以下代码片段之后近似 sum 的值。
2) 用 Big-Oh 表示法回答以下程序段的估计运行时间:
int sum = 0;
for (int i = 1; i <= n - 3; i++) {
for (int j = 1; j <= n + 4; j += 5) {
sum += 2;
}
sum++;
}
for (int i = 1; i <= 100; i++) {
sum++;
}
3) 用 Big-Oh 表示法回答以下程序段的估计运行时间:
int sum = 0;
for (int i = 1; i <= n; i++) {
sum++;
}
for (int j = 1; j <= n / 2; j++) {
sum++;
}
我习惯于在所有东西前面都贴上public static void main(String[] args) {,所以我这样做了:
public class BigO {
public static void main(String[] args) {
}
public static void main(int n) {
int sum = 0;
for (int i = 1; i <= n - 3; i++) {
for (int j = 1; j <= n + 4; j += 5) {
sum += 2;
}
sum++;
}
for (int i = 1; i <= 100; i++) {
sum++;
}
}
}
当然不行。
【问题讨论】:
-
你看过维基百科的大哦符号是什么意思吗? en.wikipedia.org/wiki/Big_O_notation 这基本上是数量级的行为。所以一个简单的 for 循环在 N 中是线性的,双循环在 N 中是二次的。(所以对于第一个代码片段,你有 n*n 加上一个常数,即 O(n^2)。
-
我明白这一点,但我的意思是我认为我的教授希望我将其放入代码并编译它以获得答案,因为她总是告诉我们她希望我们编写代码并编译它适用于我们所有的任务。更正:她确实希望我们这样做。
标签: java performance sorting search big-o