Big o 理解代码的总时间复杂度 //测试:常量 如果(长度()==0){ 返回false;//然后部分:常量 } else{//else部分:(常数+常数)*n 对于(int n=0;n

Big o 理解代码的总时间复杂度 //测试:常量 如果(长度()==0){ 返回false;//然后部分:常量 } else{//else部分:(常数+常数)*n 对于(int n=0;n,big-o,time-complexity,Big O,Time Complexity,,根据我的理解: if (length() == 0) { // (c0) return false; } else { // (c1) for (int n = 0; n < length(); n++) { // Managing for loop: (c3) if(!list[n].equals(otherList.list[n])) // whole if: (c4) return false; } }

,根据我的理解:

if (length() == 0) { // (c0)
    return false; 
} else { // (c1)
    for (int n = 0; n < length(); n++) { // Managing for loop: (c3)
        if(!list[n].equals(otherList.list[n])) // whole if: (c4)
            return false;     
    }
}
if(length()==0){//(c0)
返回false;
}else{//(c1)
for(int n=0;n

因此,他为什么会得到c0+c1+(c2+c3)然而,我不确定C1,因为另一个只是一个GOTO。它可以被计算。我也可以把它概括为C0+C1*N.P/>从技术上讲,你的观点和作者没有区别。我也尝试着那样看。然而,每当有“如果”条件时,理想的是我们应该考虑下面的任何一个语句WHI。ch根据“If”或“else”得出最坏条件下的时间复杂度。因此,总时间应为c4*n。此外,请注意,我认为计算时间复杂度时不考虑“If”和“else”等步骤。只考虑随后的语句。因此,采用“If(length()==0)'as、c0和'else'as c1可能不正确。测试条件显然需要时间。如果在for循环中有If语句,我保证它将在大O中考虑。现在,可以忽略else,因为它只是一个goto。