时间复杂度

来源:互联网 发布:用手机装修淘宝店铺 编辑:程序博客网 时间:2024/04/30 00:45

(1)程序等于算法加数据结构
(2)一个算法中的语句执行次数称为语句频度或时间频度,记为T(n);.一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))。随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语句确定它的执行次数,再找出T(n)的同数量级;
按数量级递增排列,常见的时间复杂度有:常数阶O(1), 对数阶O(log2n), 线性阶O(n), 线性对数阶O(nlog2n), 平方阶O(n^2), 立方阶O(n^3),…, k次方阶O(n^k), 指数阶O(2^n) 。对数阶O(log2n), 线性对数阶O(nlog2n),除了常数阶以外,该种效率最高

例1:算法:
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j)
{
c[ i ][ j ]=0; //该步骤属于基本操作 执行次数:n^2
for(k=1;k<=n;++k)
c[ i ][ j ]+=a[ i ][ k ]*b[ k ][ j ]; //该步骤属于基本操作 执行次数:n^3
}
}

例2:
i=1; ①
while (i<=n)
i=i*2; ②
解: 语句1的频度是1, 设语句2的频度是f(n), 则:2^f(n)<=n;f(n)<=log2n,取最大值f(n)= log2n,T(n)=O(log2n )

0 0
原创粉丝点击