Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 您好,我很难理解这段代码中if语句的O-notation运行时 for(inti=0;i_Java_If Statement_Matrix_Big O - Fatal编程技术网

Java 您好,我很难理解这段代码中if语句的O-notation运行时 for(inti=0;i

Java 您好,我很难理解这段代码中if语句的O-notation运行时 for(inti=0;i,java,if-statement,matrix,big-o,Java,If Statement,Matrix,Big O,您有两个嵌套的for循环,每个循环取决于V的大小。因此,您的总复杂度将是O(V2)。for(inti=0;i

您有两个嵌套的
for
循环,每个循环取决于
V
的大小。因此,您的总复杂度将是O(V2)。

for(inti=0;i的循环
本身就是O(n)


然后运行
for(int j=i+1;j整个代码是
O(V^2)
,因为
x=1
x=V
x
之和是
(1/2)V(V+1)
。内环是
O(V)
,因为它必须完成的最大迭代次数是
V-1
如果
语句是
O(1)
:它完成的步骤有一个恒定的最大值。

我们需要看到更多的代码,因为它是恒定的。这段代码是恒定的(
O(1)
)因为它的执行时间不取决于输入的大小,但是这可能在一些循环中,查看这些循环将告诉您实际的复杂性。您在这里没有向我们显示循环。
if
语句将是O(c)。请显示您的循环。@SethB对不起,我在代码中添加了for循环。if语句计数为O(1),即一个常量操作,不管条件值(真或假)。有趣的部分是
j=i+1
,而它仍然是
O(V^2)
回答这个问题的全部目的是解释这在多大程度上降低了复杂性。吹毛求疵:任何地方都没有
n
。@DSquare这是Big-O表示法,所以我用
n
表示Big-O表示法。
n
不是Big-O表示法固有的,只是在理论上解释它时是传统如果说“N是我们输入的大小,那么大O表示法将是……”。然而,这是一个具体的例子,输入的大小是
V
。更清楚地说,名称很重要,因为它可能指不同的东西。读取大小为WxH的矩阵的复杂性是什么?它是
O(W*H)
。它不是
O(N*N)
O(N*M)
对于定义的W和H,它是
O(W*H)
。你需要能够用输入的维度识别每个“变量”,你不能只放你“习惯”的字母。它们不是没有意义的。
for (int i=0; i<V-1; i++) {
    for (int j=i+1; j<V; j++) {
        if (matrix[i][j]) {
            from[nextedge]=i;
            to[nextedge]=j;
            nextedge++;
        }
    }
}