C for循环中n*n*n次迭代的时间复杂度是多少?
这些循环的时间复杂度是多少?如果我错了,请纠正我 这个循环是O(n^3),因为它有(n^3)/2+1个迭代C for循环中n*n*n次迭代的时间复杂度是多少?,c,algorithm,data-structures,time-complexity,big-o,C,Algorithm,Data Structures,Time Complexity,Big O,这些循环的时间复杂度是多少?如果我错了,请纠正我 这个循环是O(n^3),因为它有(n^3)/2+1个迭代 for (int i = 0; i < n * n * n; i+=2) { //body } for(int i=0;i
for (int i = 0; i < n * n * n; i+=2)
{
//body
}
for(int i=0;i
及
这个循环是O(n^3*m^2),因为它有(n^3+1)*(m^2+1)次迭代。或者这仅仅是O(n^3),因为内部循环不是一个变量n
for (int i = 0; i < n * n * n; i+=2)
{
for (int j = 0; j < m * m; j++)
{
//Body
}
}
for(int i=0;i
在第一种情况下,时间复杂度为O(n^3)
。它捕获最重要的项,因此您可以忽略1/2
的比例因子和常量+1
。在后一种情况下,它是O(n^3*m^2)
,除非将m
视为常数而不是变量。在Big-O表示法中,您不需要只有一个变量来表示输入数据的大小。在第一种情况下,时间复杂度是O(n^3)
。它捕获最重要的项,因此您可以忽略1/2
的比例因子和常量+1
。在后一种情况下,它是O(n^3*m^2)
,除非将m
视为常数而不是变量。在Big-O表示法中,不需要只有一个变量来表示输入数据的大小
这个循环是O(n^3),因为它有(n^3)/2+1个迭代
for (int i = 0; i < n * n * n; i+=2)
{
//body
}
对
这个循环是O(n^3*m^2),因为它有(n^3+1)*(m^2+1)次迭代。或者这仅仅是O(n^3),因为内部循环不是一个变量n
for (int i = 0; i < n * n * n; i+=2)
{
for (int j = 0; j < m * m; j++)
{
//Body
}
}
两者都是正确的。这取决于如果你考虑<代码> m <代码>变量或常数。
这个循环是O(n^3),因为它有(n^3)/2+1个迭代
for (int i = 0; i < n * n * n; i+=2)
{
//body
}
对
这个循环是O(n^3*m^2),因为它有(n^3+1)*(m^2+1)次迭代。或者这仅仅是O(n^3),因为内部循环不是一个变量n
for (int i = 0; i < n * n * n; i+=2)
{
for (int j = 0; j < m * m; j++)
{
//Body
}
}
两者都是正确的。这取决于如果你考虑<代码> m <代码>变量或常数。 在渐近符号中,一个人可以有多个变量。
对于第二种情况,考虑n和m作为变量,复杂性将为O(n^3*m^2)。如果m被视为常数,那么复杂性为O(n^3)。在渐近符号中,可以有多个变量。
对于第二种情况,考虑n和m作为变量,复杂性将为O(n^3*m^2)。如果m被视为一个常数,那么复杂性是O(n^3)。我认为你是正确的,除了“因为它有(n^3+1)*(m^2+1)”之外,它应该是,正如你在第一次分析中所做的那样,n^3/2……这取决于
m
和n
是什么。在第一种情况下,如果n
为常数,则循环为常数时间O(1)。记住,自由变量和绑定变量。。。当你写它时,我们通常认为N和M都是自由的,然后首先是O(n ^ 3)和第二个O(n ^ 3×m ^ 2)(外环出现n ^ 3,并且每个内环出现M ^ 2)。我认为你是正确的,除了“因为它有(n^ 3 +1)*(m^ 2 +1)”,应该和第一次分析一样,n^3/2…这取决于m
和n
是什么。在第一种情况下,如果n
为常数,则循环为常数时间O(1)。记住,自由变量和绑定变量。。。当你写它时,我们通常认为n和m都是自由的,然后首先是O(n ^ 3)和第二O(n ^ 3×m ^ 2)(外环出现n ^ 3,并且每个内环出现M ^ 2)。