【发布时间】:2022-02-15 05:34:46
【问题描述】:
我正在尝试为求和函数找到 Big-O。我知道这两个循环通常意味着 N^2 运行时间,但这只是一个 N,但 j 运行的时间比 N 本身多得多。
int Summing( int n )
{
int i
int j
int s = 0;
for(i=0; i < n; i++){
for(j=0; j < i; j++) {
s += i*i;
}
}
【问题讨论】:
-
你有什么问题?
-
您知道吗?只需在代码中添加一个计数器并运行它,然后绘制结果,您就可以凭经验确定复杂性?如果您对复杂性有预感,这是确认它的有用方法。
-
它是 O(j*n) 并且因为 j 是一个常数,你可以去掉 j。所以,结果是 O(n)。
-
@ChengThao j - 不是常数
-
这段代码的时间复杂度是二次。不需要在循环外声明变量 i 和 j。
标签: java performance time big-o