时间复杂度和空间复杂度

时间复杂度和空间复杂度

1.时间复杂度

一个算法与执行代码行数的相关性,且随着某个变量的增长而增长。

例如:

n = int(input())
a = n

这里的代码永远都只是两行代码的时间单位,不会随变量n的增长而增长。所以时间复杂度为O(1)

n = int(input())
a = 1
while a < n :
    a += 1

这里的代码的执行行数为2n + 1次,与n的值线性相关,时间复杂度为O(n)

n = int(input())
a = 1
while a < n :
    a = a * 2

设执行次数为K,2^k >= n→k>= logn(2为底数),所以时间复杂度为O(logn)

n = int(input())
a = 3
while a < n :
    a = a ** 2

同样设执行次数为K,3 ** (2**k)> n→k > log2(lnn/ln3),所以时间复杂度为O(log2(lnn/ln3))

所以时间复杂度O就是代码与变量n的相关函数,执行行数与时间复杂度函数O线性相关。

2.空间复杂度

空间复杂度主要指分配给变量的空间

一般分配空间有两种模式,例如想要知道某个数是不是100以内的质数你可以:

1. 输入你想要查询的值,通过函数运算判断
2. 事先将100以内的所有质数存到一个列表中,查询时直接通过列表查询

这里模式2的空间复杂度就是O(n)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值