a*算法的时间复杂度_算法的时间复杂度

 T(n) 为算法需要执行的运算次数。

算法的时间复杂度,用来度量算法的运行时间,记作: T(n) = O(f(n))。它表示随着 n 的增大,算法执行需要的时间的增长速度可以用 f(n) 来描述。

例1

for(int i = 0; i<4; i++) {         // 需要执行4次

    ……;     

}

这个方法需要 4 次运算,即T(n) = 4

时间复杂度体现的是增长速度,因此只需要看对整体影响最大的项,即n的最高阶项

4是常数,也可以看作4*n⌃0,由于与幂函数相乘的常数对幂函数的增速改变几乎不起作用,因此常数都被忽略,因此这个方法的时间复杂度是O(n⌃0),即O(1)。

那有没有其他情况呢?

例2

如果在上面那个for语句的里面和外面再加入for语句,如:

for(int i = 0; i

    for(int j = 0; j

        ……; 

    }

}

for(int k = 0; k

    ……; 

}

这个方法需要 n * n + n = n⌃2 + n 次运算,即T(n) = n⌃2 + n 

最高次项是n⌃2,因此这个方法的时间复杂度是O(n⌃2)。

那除了幂函数还有其他形式吗?

例3

for (int i = 2; i < n; i++) {

    i *= 2;

    ……;

}

这个方法的时间复杂度为 O(log(2)(n)),即 O(log n)。注意,log(2)写成log

当然还有其他形式增长的,所以这里按函数的增速快慢给出复杂度的比较:

3ee04a6304ac27c27e0f10db9090f546.png

O(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值