【发布时间】:2015-09-26 14:29:20
【问题描述】:
这个问题看起来比较简单,但是我好像找不到n的运行时间。
问题来了:
j = n;
while(j >= 2) {
j = j^(1/2)
}
我真的不需要总运行时间,我只需要知道如何计算第二行和第三行被击中的次数(它们应该相同)。我也想知道是否有某种公式可以找到这个。我可以看到上面的内容相当于:
for(j = n; n >= 2; j = j^(1/2)
请注意,操作类型无关紧要,每执行一行,计为1个时间单位。所以第 1 行只是 1 个时间单位,第 2 行是:
- 如果 n 为 1,则为 0 个时间单位,
- 如果 n 为 2,则为 1 个时间单位,
- 如果 n 为 4,则为 2 个时间单位,
- 如果 n 为 16,则为 3 个时间单位,以此类推
提前感谢任何提供帮助的人!非常感谢!
【问题讨论】:
标签: performance time-complexity code-analysis