【发布时间】:2015-12-08 18:12:19
【问题描述】:
我在一个非常受欢迎的网站上浏览了一篇关于循环时间复杂度分析的文章(下面给出了链接),根据那篇文章,下面第一个和第二个循环的时间复杂度是 O(1) 和 O(n)分别。 但我认为两个循环的时间复杂度是相同的 O(n)
for (int i = 1; i <= c; i++) {
// some O(1) expressions
}
我的推理:`c*n=O(n)
在看完下面的答案后,我的推理是错误的,因为没有变化的输入 n。循环运行是固定的 - c 次。因此,无论输入值 n 是什么,循环都将运行恒定时间。所以 O(1) 复杂度
for (int i = 1; i <= n; i += c) {
// some O(1) expressions
}
我的推理:c*n=O(n)
我是否遗漏了什么?如果有人可以提供帮助和解释,我将不胜感激
这是文章的链接:http://www.geeksforgeeks.org/analysis-of-algorithms-set-4-analysis-of-loops/
【问题讨论】: