下面程序段的时间复杂度是

下面程序段的时间复杂度是,第1张

这个程序是死循环,不能正常运行的。

i = 1;

while(i<=N)

i = i * 3;

它的时间复杂度是O(Log3(N))

简单点模拟一下每次循环里面s的值:

第一次执行完s+=i

s == 1

第二次s == 3 == 1+2

第三次s == 6 == 1+2+3

第四次s == 10 == 1+2+3+4

第k次 1+2+3+4+...+k == k*(k+1)/2

那么当k*(k+1)/2 >=n 的时候停止

也就是k == (根号(8*n+1) - 1 ) /2

关于n的表达式是 根号的, 所以复杂度是 根号n

还有不懂得欢迎继续hi我

此题运行时间取决于n的大小,计作:T(n) = n

时间复杂度为:O(n)

定义:

若存在函数 f(n),使得当n趋近于无穷大时,T(n)/ f(n)的极限值为不等于零的常数,则称 f(n)是T(n)的同数量级函数。

记作 T(n)= O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11107861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存