因此,我正在学习如何Introduction to Algorithms
通过Cormen计算算法的时间复杂度。书中给出的示例是插入排序:
1. for i from 2 to length[A]
2. value := A[i]
3. j := i-1
4. while j > 0 and A[j] > value
5. A[j+1] := A[j]
6. j := j-1
7. A[j+1] = value
行1.
执行n
时间。
Line 4.
,根据书,执行时间。
因此,作为一般规则,所有内循环的执行时间是否都由求和表示?
有趣的是,大多数循环都可以通过求和来表示。通常这是不正确的,例如我可以创建循环
for(int i = n; i > 1; i = ((i mod 2 == 0) ? i / 2 : 3 * i + 1)))
即初始化i
为n
,在每次迭代时i
将偶数除以2,否则乘以i
3并加1,在时停止i <= 1
。这有什么大不了的?没有人知道。
显然,我从未见过使用这种怪异的循环的真实程序,但是我看到了while循环根据某些随迭代而变化的任意条件来增加或减少计数器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句