您好我对以下两个代码片段的分析有疑问:
1)
for (i = 1; i <= 1.5n; i++)
for (j = n; j >= 2; j--)
cout << i, j;
外循环执行1.5n次,内循环执行n-2次。因此,复杂度为O(1.5n *(n-2)= O(n ^ 2)≤
2)
j = 1;
while (j < n/2) {
i = 1;
while (i < j) {
cout << j << i;
i++;
}
j++;
}
外部while循环将执行n / 2次,内部while循环将执行1 + 2 + ... + n / 2次。因此,复杂性也是O(n ^ 2)?
我对第二个问题的分析不太确定。
非常感谢您的帮助!
答案 0 :(得分:1)
你是对的。正确的解决方案是计算。
请注意:
log1p
具有log1p
复杂度,而:
j = 0;
while (j < n/2) {
j++;
}
具有O(n)
复杂度。