以下函数的时间复杂度是多少?如何计算以下函数的时间复杂度?
void function(int n){
for(int i=0; i<n; i++){. //n times
for(int j=i ; j< i*i; j++){ // n*n times
if(j%i == 0){
for(int k=0; k<j; k++){ // j times = n * n times.
++counter;
}
}
}
}
}
书说O(n^5)
。但我不明白为什么书没有考虑到j%i
。基于此,k
循环确定。你能澄清吗?
谢谢。你建议所有3个循环将采取O(n^4)。我有点困惑。你能不能请上面的外环解释一下。 – Manoj
@Manoj我正在写另一个答案,以澄清事情。将需要几分钟 –
@Manoj:对于一个特定的我,内部循环(我提到的代码部分)复杂度是O(i^3),并且因为我将从0-n变化,复杂度等于O (N^4)。至少这就是我所得到的。你可以提到这本书吗? –