当前位置: 首页 > 知识库问答 >
问题:

多个for循环的时间复杂度

邹曦之
2023-03-14

我在计算一个方法的时间复杂度:

for(int i = 0; i < P; i++){
  for(int j = P-1; j >= 0; j--){
          for(int k = 0; k < D; k++){}
          for(int z = 0; z < D; z++){}
  }}

D总是小于或等于P,但我的怀疑是在后四个。我的时间复杂度是O(2p^3),但我读过2可以像O(p^3)一样去掉。这些是正确的吗?

共有1个答案

鲜于凯康
2023-03-14

O(2p^3)等效于O(p^3)

具体来说,O符号描述了最坏情况下的时间/空间使用是如何根据输入的大小增加的(在这种情况下,时间/空间使用是以三次增长的,而不是以线性或二次增长的)。因此,我们对这种复杂性的类别感兴趣--随着p变得任意大,2p^3p^3越来越难以区分,因此我们可以忽略系数2

同时,如果我们将缩放与O(p^2)进行比较,则由于P变得任意大,因此资源使用量会少得多。即使我们将p^3的复杂度与(1000p^2)的复杂度相比较,也有一个点,p变得很大,以至于1000的因子变得不重要,因此我们可以忽略它。

 类似资料:
  • 有三个嵌套的循环,如果循环增量为1,我可以找到复杂性,但是如果循环增量像这样i=c,我就糊涂了? 第三个for循环的复杂度是m,但第一个for循环的复杂度是n/c,第二个for循环的复杂度是n==

  • 这个问题是为了修改过去的试卷,如果我走上了正确的道路,我需要一些建议。 求出下面一段代码的时间复杂度,表示给定整数n的操作次数: 所以我认为外循环是,第一个内环是,第二个内环是。我只是想知道我是否有一个大致的想法,以及如何从这里继续前进。

  • 以下示例循环的时间复杂度为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。。。(其余部分不确定)。 抱歉,如果这不合理,但任何帮

  • 今天,我和我的同事就一个特定的代码片段发生了一个小争论。代码看起来像这样。至少,这是他想象的那样。 他希望我删除第二个循环,因为这会导致性能问题。 然而,我确信,因为我在这里没有任何嵌套循环,所以无论我放了多少个顺序循环(我们只有2个),复杂度总是O(n)。 他的论点是,如果< code>n是1,000,000,并且循环需要5秒,那么我的代码将需要10秒,因为它有2个for循环。这个说法之后我就糊