审判程序的灵魂

算法效率的度量:算法

A、过后统计法:比较不一样算法对同一组输入数据的运行处理时间。函数

缺陷:测试

一、为了得到不一样算法的运行时间必须编写相应程序。3d

二、运行时间严重依赖硬件以及运行时的环境因素。blog

三、算法的测试数据的选取至关困难编译器

过后统计法虽然直观,可是实施困难且缺陷多,通常不予考虑。io

 

B、事前分析估算:依据统计的方法对算法效率进行估算。编译

影响算法效率的主要因素:class

一、算法采用的策略和方法效率

二、问题的输入规模

三、编译器所产生的代码

四、计算机执行速度

 


 

 

 

从以上三种来看,t3<t2<t1。

 

 


 

算法效率的度量:大O表示法,简化了算法效率的比较,

一、算法效率严重依赖于操做(Operation)数量。

二、在判断时首先关注操做数量的最高次项。

三、操做数量的估算能够做为时间复杂度的估算。

O(5) = O(1)

O(2n + 1) = O(2n) = O(n)

O(n^2 + n + 1) = O(n^2)

O(3n^3+1) = O(3n^3) = O(n^3)

 


 

在没有特殊说明时,咱们所分析的算法的时间复杂度都是指最坏时间复杂度。

算法空间的复杂度:

算法的空间复杂度经过计算算法的存储空间实现,

                                S(n) = O(f(n)),

其中,n为问题规模,f(n)为在问题规模为n时所占用存储空间的函数。

大O表示法一样适用于算法的空间复杂度,当算法执行时所须要的空间是常数时,空间复杂度为O(1)。

空间与时间的策略:

一、多数状况下,算法执行时所用的时间更使人关注

二、若是有必要,能够经过增长空间复杂度来下降时间复杂度

三、同理,也能够经过增长时间复杂度来下降空间复杂度

在实现算法时,须要分析具体问题对执行时间和空间的要求。

相关文章
相关标签/搜索