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
的平方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
的平方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
的平方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