【数据结构与算法01】 算法的复杂度

时间复杂度的概念

image-20220925205621146

例1:假设 n = 3000 n=3000 n=3000

image-20220925204600410

i=2998,print("I love You %d\n",i)
i=2999,print("I love You %d\n",i)
i=3000,print("I love You %d\n",i)

当i=3001,经过判断,i<=n不成立

所以,while循环执行3001次(步骤2),while循环里面的++、print执行了3000次,其它1、5执行了1次

T(3000)=1+3001+2x3000+1,所以T(n)=3n+3,n=3000

🔥结论:计算时间复杂度只需要考虑阶数高的部分

image-20220925204450124

  • 加法规则

    多项相加,只保留最高阶的项,并且系数变为1

    image-20220925204800365

  • 乘法规则

时间复杂度:常[1]、对[logn]、幂[n^2]、 指[2^n]、阶[n!]

image-20220925205012542

🌈时间复杂度的大小关系:
O ( 1 ) < O ( log ⁡ 2 n ) < O ( n ) < O ( n log ⁡ 2 n ) < 0 ( n 2 ) < O ( n 3 ) < 0 ( 2 n ) < O ( n ! ) < O ( n n ) O(1)<O\left(\log _{2} n\right)<O(n)<O\left(n \log _{2} n\right)<0\left(n^{2}\right)<O\left(n^{3}\right)<0\left(2^{n}\right)<O(n !)<O\left(n^{n}\right) O(1)<O(log2n)<O(n)<O(nlog2n)<0(n2)<O(n3)<0(2n)<O(n!)<O(nn)
image-20220925205421978

例题

image-20220925205527525

image-20220925205556832

❗易错提醒

  1. 程序不一定满足有穷性,如死循环、操作系统等;而算法必须有穷

  2. 算法满足5个基本特性(这是算法的要求而不是定义)

  3. 算法的时间复杂度为 O ( n 2 ) O(n^2) O(n2),在这里问题规模是 n n n,时间复杂度是 O ( n 2 ) O(n^2) O(n2)

  4. 在相同的规模下, O ( n ) < O ( n 2 ) O(n)<O(n^2) O(n)<O(n2)

    ✅正确!时间复杂度制定了n无穷大,故不能带入特殊值n0考虑

空间复杂度

image-20221002090301975

🍔算法原地工作:算法所需的内存空间为常量

1个int变量占4Byte,32bit

例题

Screenshot_20221002_085008

所以,空间复杂度等于递归调用的深度


Screenshot_20221002_085027

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落叶随峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值