i=1; while(i<=n) i=i*2 这个算法的时间复杂度怎么算 i=1; while (i<=n) i=i*2 时间复杂度

\u7a0b\u5e8f\u6bb5i=1\uff1bwhile(i<=n)i=i*2;\u7684\u65f6\u95f4\u7684\u590d\u6742\u5ea6\u662f\uff08\uff1f\uff09

\u4f60\u53ef\u4ee5\u5206\u6790i\uff0c\u548c\u5faa\u73af\u6b21\u6570\u4e4b\u95f4\u7684\u5173\u7cfb
i = 1, 2, 4, 8, 16 ...
\u6240\u4ee5\u5047\u8bbe\u5faa\u73af\u6b21\u6570\u662fx\u3002
\u90a3\u4e48i = 2^x
\u6761\u4ef6\u662fi <= n
2^x <= n
\u6240\u4ee5x <= logn
\u6240\u4ee5x \u4ece1 \u5230logn\uff0c\u4e00\u5171\u6267\u884c\u5faa\u73af\u4f53logn\u6b21\uff0c\u6240\u4ee5\u590d\u6742\u5ea6\u662flogn

\u6ca1\u9519\uff0cn=4\u7684\u65f6\u5019\uff0clog2n=2\u3002
\u4f46\u662f\uff0c\u4f60\u6709\u6ca1\u6709\u6ce8\u610f\u5230\uff0c\u65f6\u95f4\u590d\u6742\u5ea6\u662fO(log2n)\uff0c\u4e0d\u662flog2n\u3002\u4f60\u4e0d\u80fd\u65e0\u89c6\u7b26\u53f7"O"\u3002
\u8fd9\u4e2a\u7b26\u53f7\u7684\u610f\u601d\u662f\uff1a\u65f6\u95f4\u590d\u6742\u5ea6\u4e0d\u4f1a\u6bd4log2n\u5927\u5f88\u591a\u3002\u901a\u4fd7\u7684\u8bf4\uff1a\u5c31\u662f\u65f6\u95f4\u590d\u6742\u5ea6\u6216\u8005\u548clog2n\u5728\u540c\u4e00\u6570\u91cf\u7ea7\uff0c\u6216\u8005\u6bd4log2n\u5c0f\u3002

这个算法的时间复杂度为logn。

一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。

并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。

一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f (n),因此,算法的时间复杂度记做:T (n) =0 (f (n) )。随着模块n的增大,算法执行的时间的增长率和f (n)的增长率成正比,所以f (n)越小,算法的时间复杂度越低,算法的效率越高。

在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语句确定它的执行次数,再找出T (n)的同数量级。

扩展资料

算法的时间性能分析

算法耗费的时间和语句频度

一个算法所耗费的时间=算法中每条语句的执行时间之和

每条语句的执行时间=语句的执行次数(即频度(Frequency Count))×语句执行一次所需时间

算法转换为程序后,每条语句执行一次所需的时间取决于机器的指令性能、速度以及编译所产生的代码质量等难以确定的因素。

若要独立于机器的软、硬件系统来分析算法的时间耗费,则设每条语句执行一次所需的时间均是单位时间,一个算法的时间耗费就是该算法中所有语句的频度之和。



你可以分析i,和循环次数之间的关系
i = 1, 2, 4, 8, 16 ...
所以假设循环次数是x。
那么i = 2^x
条件是i <= n
2^x <= n
所以x <= logn
所以x 从1 到logn,一共执行循环体logn次,所以复杂度是logn

log2(n)

扩展阅读:i人和e人测试 ... while true learn ... 卜i卜i卜ii1j丫 ... 车牌号1和l图片 ... 卜丨汁i士事认 丨承末丫破 ... 入一i卜 1 ... while d01 ... point to the door ... do while 0 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网