【发布时间】:2016-10-04 00:02:13
【问题描述】:
我对软件工程课程的介绍刚刚达到了时间复杂度,并学习了如何分析某些算法。我很难理解他们是如何找到解决方案的,希望有人能解释一下,希望有一些合乎逻辑的证据?
void foo(int N) {
int k = 1;
while (k < N * N) {
k = k * 2;
}
}
他们的解决方案是这个函数的Big-O是O(logN) [我知道这里的log是base 2]
我试图通过将随机值分配给 N 来迭代多少次来解决这个问题,但我找不到模式,有什么帮助吗?
【问题讨论】:
-
用二进制写出
k和N的值。那么这一切都应该有意义 -
使用数学程序/库绘制循环数与 N 值递增的关系。
-
@user6918211:如果您觉得以下答案之一就足够了,请将其标记为答案。
标签: c algorithm time-complexity big-o