如何计算多个嵌套循环的时间复杂度?我已经完成了这段代码,但对它的时间复杂度感到困惑!
for(i=0; i<max; i++)
{
for(j=0; j<max; j++)
{
a[i][j]= rand()%2;
}
}
for(i=0; i<max; i++)
{
for(j=0; j<max; j++)
{
if(a[j][i]==1)
{
inD++;
}
}
}
for(i=0; i<max; i++)
{
for(j=0; j<max; j++)
{
if(a[i][j]==1)
{
outD++;
}
}
}
你有三个循环。让我们拿第一个。
外部循环运行最大
次数,每次通过该循环都运行内部循环最大
次数,总共对 a[i][j]= rand()%2;
进行最大 * 最大
调用。每次调用都会生成一个随机数:我不知道这样做的成本是多少,但它与最大值
无关。此循环的成本为 O(max^2)。
其他两个循环有相似的复杂性,除了每个内部调用本质上是常数时间,因为它们只是增量。
假设它们一个接一个地运行,整个事情是 O(max^2 max^2 max^2) = O(max^2)。
这个答案更详细地说明了它:嵌套for循环的时间复杂度
以下示例循环的时间复杂度为O(n^2),有人能解释为什么是O(n^2)吗?因为这取决于c的价值。。。 循环1--- 回路2--- 如果c=0;然后它运行无限次,就像增加c值一样,内部循环的运行次数也会减少 有人能给我解释一下吗?
我正在努力找到确切的答案 我知道外环运行了n次。然后,第二个循环每次运行的次数不同,因为它从i开始: n(n-1)(n-2)。。。2 1. 但是,因为我们只关心最坏的情况(当i=n时),所以第二个循环将运行n-n次,因为它将从i=n开始。这当然没有意义,但这就是我被卡住的地方。我已经运行了这段代码,找到了序列的前四个元素:S=0 1 4 10。。。(其余部分不确定)。 抱歉,如果这不合理,但任何帮
我在计算一个方法的时间复杂度: D总是小于或等于P,但我的怀疑是在后四个。我的时间复杂度是O(2p^3),但我读过2可以像O(p^3)一样去掉。这些是正确的吗?
有三个嵌套的循环,如果循环增量为1,我可以找到复杂性,但是如果循环增量像这样i=c,我就糊涂了? 第三个for循环的复杂度是m,但第一个for循环的复杂度是n/c,第二个for循环的复杂度是n==
这个问题是为了修改过去的试卷,如果我走上了正确的道路,我需要一些建议。 求出下面一段代码的时间复杂度,表示给定整数n的操作次数: 所以我认为外循环是,第一个内环是,第二个内环是。我只是想知道我是否有一个大致的想法,以及如何从这里继续前进。
我很难理解算法分析,尤其是下面的例子: 所以我的理解是,外循环是,当我乘以一个常量时,我不确定是否有任何区别。 不过,最让我困惑的是内部循环。我认为它是,因为j被常数递减,但我不确定和