算法的时间复杂度

Posted carsonche

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法的时间复杂度相关的知识,希望对你有一定的参考价值。

算法的时间复杂度

编写算法时,需要对算法进行分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二部就是分析算法的时间复杂度。这是用来衡量你的算法好不好,以及能不能用。这在算法的编写当中至关重要。因为时间复杂度可以帮助我们优化算法。也是衡量算法能否使用的判定条件。

 

时间复杂度的定义:

算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。 

 

时间复杂度的计算

 如果一个算法的执行次数是 T(n),那么只保留最高次项,同时忽略最高项的系数后得到函数 f(n),此时算法的时间复杂度就是 O(f(n))。为了方便描述,下文称此为 大O推导法。

技术分享图片

该算法的执行次数为2N+2次,所以我们可以根据推导法计算出来,这个算法的时间复杂度为----------------O(n)

技术分享图片

该算法的执行次数为N^2+2N次,所以我们可以根据推导法计算出来,这个算法的时间复杂度为----------------O(n^2),这种循环结构可以用乘法判定也就是O(n × n × 1)

 

时间复杂度所耗费的时间是:

O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) <O(2n) < O(n!) <O(nn)

 时间复杂度的结论:

结论1:常见的算法的时间复杂度,

 技术分享图片

结论2:算法中语句执行次数为一个常数,则时间复杂度为O(1),

结论3:当你的算法的时间复杂度超过了O(n^2)时,你就要考虑这个算法的规模了,因为这会在后面增长的非常快而导致程序卡死

 

以上是关于算法的时间复杂度的主要内容,如果未能解决你的问题,请参考以下文章

算法的时间复杂度和空间复杂度

算法分类 ,时间复杂度 ,空间复杂度,优化算法

算法之算法的时间复杂度

算法时间复杂度和空间复杂度详解

如何计算算法复杂度

算法的时间复杂度和空间复杂度详解