Time complexity 三重for环的增长阶

Time complexity 三重for环的增长阶,time-complexity,Time Complexity,我正在练习算法的复杂性,我在网上遇到了这段代码,但我无法计算出它的增长顺序。有什么想法吗 int counter= 0; for (int i = 0; i*i < N; i++) for (int j = 0; j*j < 4*N; j++) for (int k = 0; k < N*N; k++) counter++; int计数器=0; 对于(int i=0;i*i

我正在练习算法的复杂性,我在网上遇到了这段代码,但我无法计算出它的增长顺序。有什么想法吗

    int counter= 0;
    for (int i = 0; i*i < N; i++)
    for (int j = 0; j*j < 4*N; j++)
    for (int k = 0; k < N*N; k++)
    counter++;
int计数器=0;
对于(int i=0;i*i
Sqrt n x 2 Sqrt n x n^2

其中:

第3条

说明:

对于第一个循环,方程两边的平方根

i^2=n

对于第二个循环,求方程两边的平方根

j^2=4n^2


第三个循环是直接向前的

Sqrt n x 2 Sqrt n x n^2

其中:

第3条

说明:

对于第一个循环,方程两边的平方根

i^2=n

对于第二个循环,求方程两边的平方根

j^2=4n^2


第三个循环是直接向前的

Sqrt n x 2 Sqrt n x n^2

其中:

第3条

说明:

对于第一个循环,方程两边的平方根

i^2=n

对于第二个循环,求方程两边的平方根

j^2=4n^2


第三个循环是直接向前的

Sqrt n x 2 Sqrt n x n^2

其中:

第3条

说明:

对于第一个循环,方程两边的平方根

i^2=n

对于第二个循环,求方程两边的平方根

j^2=4n^2

第三个循环是直接向前的

一次执行一个步骤(在本例中为循环):

  • 只要第一个循环的平方小于
    N
    ,它就会递增
    i
    ,因此这一定是
    O(sqrt N)
    ,因为
    int(sqrt(N))
    int(sqrt(N))-1
    是平方小于
    N
    的最大整数值

  • 第二个循环也是如此。我们可以忽略
    4
    ,因为它是一个常量,在处理大oh符号时,我们不关心这些。所以前两个循环一起是
    O(sqrt N)*O(sqrt N)=O(sqrt(N)^2)=O(N)
    。您可以增加复杂性,因为循环是嵌套的,所以第二个循环将在第一个循环的每次迭代中完全执行

  • 第三个循环显然是
    O(N^2)
    ,因为
    k
    上升到
    N
    的平方

  • 所以整个过程必须是O(N)*O(N^2)=O(N^3)。通常,您可以通过计算第一个循环、第二个循环、前两个循环的复杂性来解决此类问题。

    一次执行一个步骤(本例中为循环):

  • 只要第一个循环的平方小于
    N
    ,它就会递增
    i
    ,因此这一定是
    O(sqrt N)
    ,因为
    int(sqrt(N))
    int(sqrt(N))-1
    是平方小于
    N
    的最大整数值

  • 第二个循环也是如此。我们可以忽略
    4
    ,因为它是一个常量,在处理大oh符号时,我们不关心这些。所以前两个循环一起是
    O(sqrt N)*O(sqrt N)=O(sqrt(N)^2)=O(N)
    。您可以增加复杂性,因为循环是嵌套的,所以第二个循环将在第一个循环的每次迭代中完全执行

  • 第三个循环显然是
    O(N^2)
    ,因为
    k
    上升到
    N
    的平方

  • 所以整个过程必须是O(N)*O(N^2)=O(N^3)。通常,您可以通过计算第一个循环、第二个循环、前两个循环的复杂性来解决此类问题。

    一次执行一个步骤(本例中为循环):

  • 只要第一个循环的平方小于
    N
    ,它就会递增
    i
    ,因此这一定是
    O(sqrt N)
    ,因为
    int(sqrt(N))
    int(sqrt(N))-1
    是平方小于
    N
    的最大整数值

  • 第二个循环也是如此。我们可以忽略
    4
    ,因为它是一个常量,在处理大oh符号时,我们不关心这些。所以前两个循环一起是
    O(sqrt N)*O(sqrt N)=O(sqrt(N)^2)=O(N)
    。您可以增加复杂性,因为循环是嵌套的,所以第二个循环将在第一个循环的每次迭代中完全执行

  • 第三个循环显然是
    O(N^2)
    ,因为
    k
    上升到
    N
    的平方

  • 所以整个过程必须是O(N)*O(N^2)=O(N^3)。通常,您可以通过计算第一个循环、第二个循环、前两个循环的复杂性来解决此类问题。

    一次执行一个步骤(本例中为循环):

  • 只要第一个循环的平方小于
    N
    ,它就会递增
    i
    ,因此这一定是
    O(sqrt N)
    ,因为
    int(sqrt(N))
    int(sqrt(N))-1
    是平方小于
    N
    的最大整数值

  • 第二个循环也是如此。我们可以忽略
    4
    ,因为它是一个常量,在处理大oh符号时,我们不关心这些。所以前两个循环一起是
    O(sqrt N)*O(sqrt N)=O(sqrt(N)^2)=O(N)
    。您可以增加复杂性,因为循环是嵌套的,所以第二个循环将在第一个循环的每次迭代中完全执行

  • 第三个循环显然是
    O(N^2)
    ,因为
    k
    上升到
    N
    的平方


  • 所以整个过程必须是O(N)*O(N^2)=O(N^3)。通常,您可以通过计算第一个循环、第二个循环、前两个循环的复杂性来解决此类问题。

    谢谢您的回答。@JVTura-我注意到您没有接受任何问题的答案。如果答案对您有帮助,请勾选t