计算内循环的时间复杂度

SO用户

因此,我正在学习如何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.,根据书,执行在此处输入图片说明时间。

因此,作为一般规则,所有内循环的执行时间是否都由求和表示?

Zim-Zam O'Pootertoot

有趣的是,大多数循环都可以通过求和来表示。通常这是不正确的,例如我可以创建循环

for(int i = n; i > 1; i = ((i mod 2 == 0) ? i / 2 : 3 * i + 1)))

即初始化in,在每次迭代时i将偶数除以2,否则乘以i3并加1,在时停止i <= 1这有什么大不了的?没有人知道

显然,我从未见过使用这种怪异的循环的真实程序,但是我看到了while循环根据某些随迭代而变化的任意条件来增加或减少计数器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章