时间复杂度

衡量一个算法是否良好

运行时的快慢时间复杂度
所需要耗费的资源空间复杂度

时间复杂度:

找到基本语句,并计算该语句的总执行次数(以基本语句执行次数最多情况计算该算法的时间复杂度)

一般求算法的时间复杂度时,需要了解该算法的原理
用大O的渐进表示法表示

二分查找:O(lgN)
在这里插入图片描述

递归:O(N)

单次递归调用语句的次数 * 总递归次数
在这里插入图片描述
在这里插入图片描述

  • 大部分单次递归调用语句次数为1(每次执行无循环语句)

斐波那契数列

在这里插入图片描述

  • 要计算数列中的某一项值,也是递归计算
  • 如果要计算第N项,其时间复杂度为 O(2^N)
  • 这种算法时间复杂度过高,性能太差(因为重复次数太多),如图,每计算一项就需要一个树形图,
  • 左侧在求F5时就已经求得了F4,但是在右侧依旧要求F4

对斐波那契算法优化,时间复杂度优化到O(N)
在这里插入图片描述
借助辅助空间
在这里插入图片描述
递归是函数的循环调用
每调用一个函数,都会开辟一块栈帧,在编译阶段就确定了一块栈帧的大小

栈 帧:

  • 函数在栈上分配的各自空间,每个空间就叫栈帧(栈空间中每个小空间)实际是一种数据结构
  • 该结构中保存的是函数调用相关的一些信息,比如参数、局部变量、一些寄存器信息、返回时需要用的信息
  • 栈空间有固定的大小,所以函数递归调用次数不能过多,否则会造成栈溢出
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值