算法时间复杂度的时间限制以及算法时间复杂度的分析

  首先在竞赛中,计算机1s能执行5*10^8,这也就是说我们所能执行的计算次数在10的8次方以内,超出范围就容易TLE,因此在算法竞赛中我们需要计算出题目范围所给的时间复杂度,排除超出范围的算法,下面先简单计算各个量级的时间复杂度。

  (1)O(n)的算法能解决的范围在n<=10^8(KMP字符串查找法,欧拉筛)

  (2)O(nlogn)的算法能解决的范围在n<=10^6(线段树)

  (3)O(n根号n​)的算法能解决的范围在n<=10^5(二层循环,其中一层循环变量呈倍数关系)

  (4)O(n^2)的算法能解决的范围在n<=5000(二层for循环,dp)

  (5)O(n^3)的算法能解决的范围在n<=300(Floyd用来求多源最短路)

  (6)O(2^n)的算法能解决的范围在n<=25(二进制枚举)

  (7)O(n!)的算法能解决的范围在n<=11(枚举排列)

  时间复杂度大小比较:O(1)<O(log2n)<O(n)<O(nlog2n)<O(n^2)<O(n^3)<......<O(n!)

   例题分析:O(n)

   for(int i=0;i<n;++i)

第一步:列出t以及每轮i的变化值

i      0         1            2           3          4

t      0         1            2           3          4      

第二步:找到t与i的关系     t=i

第三步:确定循环的终止条件  i=n

第四步:联立上述两个方程  t=n

所以它的时间复杂度就为O(n)

二层for循环同理,假设i和j都小于n,那么t=n*n,时间复杂度就为O(n^2)

例题分析:log2n

i=n*n;

while(i!=1)

i/=2;

第一步:  i           n*n          n*n/2         n*n/4         n*n/8

                t            0              1               2                3   

第二步:i=n*n/2^t

第三步:i=1

第四步:    n*n/2^t=1  n^2=2^t即t=2log2n

所以它的时间复杂度就为O(log2n 

以上,就是对算法的时间复杂度基础的分析。  

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值