//test:constant
if(length()==0){
return false; //then part:constant
}
else{ //else part:(constant+constant)*n
for(int n=0; n<length();n++){
//another if: constant+constant(no else part)
if(!list[n].equals(otherList.list[n]))
//constant
return false;
}
}
总时间= c0 + c1 +(c2 + c3)* n
虽然我能够弄清楚给定代码的复杂性将是O(n),但是我无法理解代码的作者如何到达总时间 C0 + C1 +(C2 + C3)* N
在我看来,它应该只是cn。请帮我理解。
答案 0 :(得分:0)
据我所知:
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;
}
}
这就是为什么他得到c0 + c1 +(c2 + c3)* n。但是,我对c1不确定,因为其他只是一个goto。可以算一下我猜。此外,这可以概括为c0 + c1 * n。