时间复杂度往往用来衡量一个算法的好坏,时间复杂度的估算是算法的重中之重。
一、什么是时间复杂度
时间复杂度是一种函数,用来描述算法执行的时间。既然是一种函数,就涉及到X与Y(自变量与因变量)。因变量代表是时间复杂度的执行时间,自变量是时间复杂度的问题规模。这里的执行时间,它表示的是一种“执行次数”。
二、时间复杂度的计算
用大Ο记号表示算法的时间性能。
将基本语句执行次数的数量级放入大Ο记号中。
如果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列的循环,则将并列循环的时间复杂度相加。例如:
for (i=1; i<=n; i++)
x++;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
x++;
第一个for循环的时间复杂度为Ο(n),第二个for循环的时间复杂度为Ο(n²),则整个算法的时间复杂度为Ο(n+n²)=Ο(n²)。
加法原则:T(n)=O(f(n))+O(g(n))=O(max(fn,gn))
常见的算法时间复杂度由小到大依次为:
Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n²)<Ο(n³)<Ο(2n)<Ο(n!)<O(nn)
三、常见时间复杂度的例题
int result=1;
while(x<n){
X=X *2;
}
X=X * 2; 随着X每次乘以2后,都会越来越接近n,当X大于等于n时就会退出循环(限制条件)。
循环的次数为n,所以2^X=n于是X=log₂n,因此得出这个算法的时间复杂度为O(log 2n)。
时间复杂度分析的基本策略是:从内向外分析,从最深层开始分析。如果遇到函数调用,要深入函数进行分析。
转载自原文:https://blog.csdn.net/m0_63850771/article/details/127229462?ops_request_misc=&request_id=&biz_id=102&utm_term=%E6%97%B6%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6%E8%AE%A1%E7%AE%97&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-127229462.nonecase&spm=1018.2226.3001.4187
文章介绍了时间复杂度的概念,它是衡量算法效率的一种方式。通过大Ο记号来表示算法执行次数的数量级,重点关注最内层循环或嵌套结构。常见的算法时间复杂度有Ο(1)到Ο(n!)等,并通过一个例子展示了如何分析时间复杂度为Ο(log2n)的算法。时间复杂度分析应从内向外,考虑函数调用的影响。
3412

被折叠的 条评论
为什么被折叠?



