int sum = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j += 2) {
sum += 4;
}
}
for (int k = -50; k <= -1; k++) {
sum--;
}
这个为什么是O(N^2)
int sum = 0;
int j = 1;
while (j <= n) {
sum++;
j = j * 2;
}
这个为什么是O(logN)
第一个中这句话 for (int j = 1; j <= i; j += 2) 为什么是N/2?
时间复杂度的计算,是看哪个变量?N还是别的?
谢谢了。
算法复杂度是指执行一个算法所需要的工作量。具体的专业解释,请看书或者去维基
回答问题:
for (int j = 1; j <= i; j += 2) 因为每次递增是2,所以是N/2,
如果代码是这样的:for (int j = 1; j <= i; j += 3)每次递增是3,则为N/3
上面只是一个不准确的估算,准确的说其时间复杂度应该是Σi*(i/2) (0<i<=n),对这个值进行运算得到的就是O(N^2)。