Time complexity 当内部循环只运行一次时嵌套循环的时间复杂度?
我有以下代码,并试图找出其时间复杂性:Time complexity 当内部循环只运行一次时嵌套循环的时间复杂度?,time-complexity,nested-loops,Time Complexity,Nested Loops,我有以下代码,并试图找出其时间复杂性: int sum(int m, int n, int K) { int s = 0; for (int i = 0; i < n; i++) { s += i; if (i == K % 2) { for (int j = 0; j < m; j++) { s += j; } } } re
int sum(int m, int n, int K) {
int s = 0;
for (int i = 0; i < n; i++) {
s += i;
if (i == K % 2) {
for (int j = 0; j < m; j++) {
s += j;
}
}
}
return s;
}
int和(int m,int n,int K){
int s=0;
对于(int i=0;i
根据代码,外循环在O(n)处运行,内循环在O(m)处运行。但是,内部循环只执行一次(当i
等于K%2
时)。我不确定它只运行一次时的时间复杂度是O(nm)还是O(n+m)。目前,我怀疑复杂性应该是O(n+m)。有人能给我解释一下这个例子吗?它是O(m+n),因为内部循环只运行一次
通常将内部循环的O(m)复杂度乘以n的原因是,通常内部循环执行n次。我们应该将每个操作的复杂度乘以它完成的次数。在这种情况下,O(m)操作执行一次,因此应该乘以1,而不是n
更具体地说,赋值s+=i
和比较i==K%2
总共进行n次,赋值s+=j代码>总共执行了m次,因此总步骤数为O(m+n)。没有执行mn次或任意倍数的操作