我是算法分析的新手。我只是想验证我的理解:
例如:
for (i=0, i<n; i++) {
}
很明显,有 1 个分配、n 个比较和 n 个增量。
n 函数为:T(n) = t0 + t1*n + t2*n = t0 + (t1+t2)n = c0+c1*n
所以复杂度是:O(n)
但是,在其他情况下,我需要一些建议:
for (i=0, i<=n; i++) {
}
T(n) = t0 + t1*(n+1) + t2*(n+1) ???
for (i=0, i<n-1; i++) {
}
T(n) = t0 + t1*(n-1) + t2*(n-1) ???
for (i=1, i<n; i++) {
}
T(n) = t0 + t1*(n-1) + t2*(n-1) ???
我想有人会说所有这些 fors 循环都只是 O(n),这是唯一重要的事情。但我想知道那些 T(n) 定义是否可以。