算法效率度量方法f(n)、时间复杂度O( )、空间复杂度S( )

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/datadev_sh/article/details/79109211

算法效率的度量方法

1、事后统计方法:缺陷多。

 1)需要耗时耗力编制程序

  2)程序执行受环境影响大

 3)测试数据的设计困难
2、事前分析估算方法。

看下几个算法
第一种算法,执行次数为: 1+(n+1)+ n + 1  = 2n + 2

第二种算法,执行次数为:1 + 1 + 1 = 3

第三种算法,执行次数为: 1 + n * n + 1 =n² + 2

如果n足够大,那么每个算法的首尾的那次执行可以忽略,则可分为记为:

f(n) = 2n

f(n) = 1

f(n) = n²

算法时间复杂度

算法的时间度量,记作:T(n)= O(f(n))。像这样用大写的O( )来体现算法时间复杂度的记法,称之为大O记法。

推导大O阶方法

如何对 f(n) = n² + 2 进行推导?

1、用常数1取代所有加法常数。

2、只保留最高阶。

3、去除与这个项相乘的常数。

那么,上文的可以记作:
O(f(n)) = 2n  即 O(n) 线性阶
O(f(n)) = 1 即 O(1) 常数阶
O(f(n)) = n² 即 O(n²) 平方阶

常见的时间复杂度

算法空间复杂度

算法空间复杂度的计算公式记作(Space Complexity):S(n) = O(f(n)),其中n是问题规模,f(n)为语句关于n所占存储空间的函数。

如当一个算法的空间复杂度为一个常量,即不随被处理数据量n的大小而改变时,可表示为O(1);当一个算法的空间复杂度与以2为底的n的对数成正比时,可表示为0(10g2n);当一个算法的空I司复杂度与n成线性比例关系时,可表示为0(n)。

猜你喜欢

转载自blog.csdn.net/datadev_sh/article/details/79109211