计算嵌套for循环的时间复杂度

时间:2013-10-13 05:25:34

标签: performance algorithm big-o

我无法计算这些for循环的时间复杂度:

for(int i=0; i<len; i++){
    countOne++;
    for(int j=i/2; j<len; j++){
        countTwo++;
        for(int k=i/2; k<len; k++){
            countThree++;
        }
    }
}

我不明白如何计算2个最内层循环的时间复杂度。

2 个答案:

答案 0 :(得分:3)

这听起来像是一个大问题。但是你应该在将来指定它。

  • countOne递增len次。
  • 对于每个icountTwo增加len-i/2次。 i从0变为len-1,因此countTwolen/2len(或O(len))次之间按i递增,或总计O(len 2 )。
  • countThree的类似故事,它增加了O(len 3 )次。

因此整个算法都是O(len 3 )。

答案 1 :(得分:0)

您可以使用Sigma表示法进行有条理的处理:

enter image description here