时间复杂度与复杂度

时间复杂度

​ 时间复杂度o(1):o表示一个估值,1代表一个时间运行单位,这个值比较小

​ O(n):表示一层循环

​ O(n^2):表示两层循环

​ O(n^3):表示三层循环,并且依次类推
在这里插入图片描述
(1)时间复杂度:O(1),不涉及根本的变化,还是在一次方级别的

(2)时间复杂度为O(n^2)
在这里插入图片描述
这种的时间复杂度记为:O(log2n)或O(logn)

当算法过程出现循环折半的时候,复杂度式子中会出现logn

如何简单快速地判断算法复杂度

1.快速盘算算法复杂度(适用于绝大多数情况):

​ 确定问题规模n

​ 循环下班呐过程-logn

​ k层关于n的训话–n^k

2.复杂情况:根据算法执行过程判断

小结

1.时间复杂是用来估算算法运行时间的一个式子(单位)

2.一般来说,时间复杂度高的算法比复杂度低的算法满。

3.常见的时间复杂度(按照效率顺序)

​ O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n2logn)<O(n^3)

4.复杂问题的时间复杂度

​ O(N!),O(2n),O(nn)

空间复杂度

空间复杂度:用来评估算法内存占用大小的式子

空间复杂度的标识方式与实践复杂度完全一样

​ 算法使用了进个变量:O(1)

​ 算法使用了长度为n的一维列表:O(n)

​ 算法使用了m行n列的二位列表:O(mn)

“空间换时间”:宁可占用更多时间,也要让时间更快

递归方面:汉诺塔问题

def hanoi(n, a, b, c):
    if n>0:
        hanoi(n-1, a, c, b)
        print("moving from %s to %s" % (a, c))
        hanoi(n-1, b, a, c)

hanoi(3, 'A', 'B', 'C')      
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值