以下计划O(n^2)
的时间复杂度如何?
for (int i = n; i > 0; i += c) {
for (int j = i+1; j <=n; j += c) {
// some O(1) expressions
}
}
第二个for
循环不会像条件j <= n
那样执行,j的值将始终大于n。
检查此link
答案 0 :(得分:1)
如果n
和c
是正数,那么第二个for循环将不会执行。
在我看来,那些for循环在该链接中写得不正确。
答案 1 :(得分:0)
我认为作者在这里的实际含义是
for (int i = n; i > 0; i -= c) {
for (int j = i+1; j <=n; j += c) {
// some O(1) expressions
}
通过这种方式,复杂性为(1 + n/c
)*(n/2c
)= O(n^2)