【发布时间】:2014-02-01 16:34:03
【问题描述】:
#include <stdio.h>
int main() {
int N = 32; /* for example */
int sum = 0;
for (int i = 1; i <= N*N; i = i*3)
for (int j = 1; j <= i; j++)
sum++;
printf("Sum = %d\n", sum);
return 0;
}
外循环很奇怪。
如果只检查 N(不是 N*N),那么 i 每次乘以 3 就意味着外部循环需要 n/3 次迭代?
但检查是 N* N 或 N^2 ,因此意味着将增长
N^2 / 3 ??? (n squared divided by 3) Is that correct?
如果我使用不同的 N 值,比如每次翻倍,i 循环(单独)不会增长太多。像对数增长)。我将如何用数学方式表达这一点?
那么你如何看待内循环?如果它每次都增加到 i ,我该如何用数学方式表达呢?如何将内部循环与 N 联系起来?
我希望 a) 能够用 N 在数学上表达“复杂性”。然后下一步,b) 是使用大 O 表示法。
对此感到困惑。任何帮助将不胜感激。
【问题讨论】:
标签: c algorithm time-complexity