【算法与数据结构 の 相关概念】时间复杂度

时间复杂度分析

  1. 基本操作,即只有常数项,认为其时间复杂度为O(1)
  2. 顺序结构,时间复杂度按加法进行计算
  3. 循环结构,时间复杂度按乘法进行计算,循环次数乘以循环体代码的复杂度(例:for,while)
  4. 分支结构,时间复杂度取最大值(例:switch,if-else)
  5. 判断一个算法的效率时,往往只需要关注操作数量加法项中的最高次项,其它次要项和常数项可以忽略
  6. 在没有特殊说明时,我们所分析的算法的时间复杂度都是指最坏时间复杂度

常见时间复杂度

O(1)<O(logn)<O(n)<(nlogn)
<O( n 2 n^2 n2)<O( n 3 n^3 n3)<O( 2 n 2^n 2n)<O(n!)
在这里插入图片描述
一般我们都是将代码的时间复杂度控制在O(logn),O(n),O(nlogn),O( n 2 n^2 n2)这四个范围值内

例题

给定N个整数的序列{ A 1 A_1 A1, A 2 A_2 A2,…, A N A_N AN},求函数 f ( i , j ) = m a x f(i,j)=max f(i,j)=max{ 0 , ∑ k = i j A k 0,\sum_{k=i}^{j} A_k 0,k=ijAk}

算法1

T(N)= n ∗ n ∗ ( 1 + n ∗ ( 1 + m a x ( 1 , 0 ) ) ) n*n*(1+n*(1+max(1,0))) nn(1+n(1+max(1,0)))= 2 n 3 + n 2 2n^3+n^2 2n3+n2= O ( n 3 ) O(n^3) O(n3)

在这里插入图片描述

算法2

T(N)= n ∗ ( 1 + n ∗ ( 1 + m a x ( 1 , 0 ) ) ) n*(1+n*(1+max(1,0))) n(1+n(1+max(1,0)))= 2 n 2 + n 2n^2+n 2n2+n= O ( n 2 ) O(n^2) O(n2)
在这里插入图片描述

算法3

在这里插入图片描述

算法4

T ( N ) = n ∗ ( 1 + m a x ( 1 , 0 ) ) = 2 n = O ( n ) T(N)=n*(1+max(1,0))=2n=O(n) T(N)=n(1+max(1,0))=2n=O(n)

在这里插入图片描述

算法复杂度速查

图例如下
在这里插入图片描述

抽象数据结构复杂度

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

排序算法复杂度

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值