时间复杂度

1.时间频度:一个算法中语句的执行次数称为时间频度或者语句频度,用T(n)表示。其中n是问题规模。


2.时间复杂度:若存在一个辅助函数f(n)使得当n趋近于无穷大的时候T(n)/f(n)趋向于一个不为0的常数,那么就是说T(n)和f(n)是同数量级函数,可以表示为T(n)=O(f(n)),O(f(n))称为渐进时间复杂度,简称时间复杂度。

   
 时间复杂度相同,但是时间频度不一定相同。

计算出f(n)以后,可以忽略掉其最高次幂的系数和其他低次幂的项。


3.常见的时间复杂度按数量级排序依次为 常数阶O(1) 对数阶O(log 2 n) 线性阶O(n) 线性对数阶 O(n log 2 n) 平方阶O(n^2)  立方阶 O(n^3)  k次方阶 O(n^k) 指数阶 O(2^n)……

4.对于同一个问题,解决的算法不一样,时间复杂度也就可能是不一样的,由于时间复杂度和问题规模n有关,所以在选取算法时要考虑n的大小来确定到底哪一个是时间复杂度最优的算法。具体可以在同一坐标轴中画出n^2和n^3的图像,在不同区域内两个函数值大小不一样。


5.最好,最坏和平均时间复杂度:对于某些算法,时间复杂度不仅仅取决于时间频度,还依赖于其他因素。比如在一个数组中寻找4,那么4 的位置就影响了时间复杂度。4可能在第一个位置找到f(n)=1,也可能在最后一个位置找到f(n)=n。平均时间复杂度就是最好情况和最坏情况下的平均值。

   实际上,人们更关注最坏时间复杂度和平均时间复杂度,通常都是计算最坏时间复杂度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值