了解代码的总时间复杂度

时间:2015-03-09 18:17:05

标签: big-o time-complexity

//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。请帮我理解。

1 个答案:

答案 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。