《算法不好玩》专题一:递归与时间复杂度

视频链接:《算法不好玩》专题一

1-1初识递归

递归(Recursion)是函数自己调用自己。递归是计算机科学特有的解决问题的方法。

使用递归计算5的阶乘:
在这里插入图片描述
从上到下是「拆分问题」,从下到上是「组合问题的解」。
递归是先「自顶向下」,再「自底向上」

1-2栈与深度优先遍历

递归借助「栈」实现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ryxA874b-1649337435473)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20220407200346189.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TMP3wrsi-1649337435474)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20220407200638595.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-naoVI8oH-1649337435474)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20220407200712065.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cdZUYIYx-1649337435475)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20220407200759181.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y93A3Fzt-1649337435475)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20220407200832113.png)]

按照「深度优先」遍历

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LuVz927g-1649337435476)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20220407201115884.png)]

如果原问题和子问题呈现出树形结构,拆分子问题和组合子问题的解释按照深度优先遍历(DFS)的方式进行的。从根节点开始,只要有可能继续往下走的结点,就继续走下去。直到没有可以走的结点以后,再退回来找还没有走过的结点继续走下去。

总结:

  • 递归需要借助栈
  • 栈的逻辑由编程语言帮助我们实现
  • 是按照深度优先遍历的顺序拆分问题与组合子问题的解

1-3分治算法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GEz6C8qe-1649337435476)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20220407202001061.png)]

  • 递归是一种「自顶向下」解决问题的思路,也是「分而治之」算法思想的体现
  • 告诉程序递归终止条件

1-4初始时间复杂度

时间复杂度:随着输入规模的增大,程序的运行时间增加的快慢。
(输入规模:数据的大小,通常用N表示;运行时间:也可以理解为操作次数执行算法的消耗)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gBnptHpz-1649337435477)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20220407202937568.png)]

举例:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N3jluk0K-1649337435477)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20220407203820342.png)]
复杂度分析得设计思想

  • 考虑数据量特别大的时候(时间复杂度低的算法在数据量特别大的时候才会体现出来)
  • 复杂度分析是事前估计(时间复杂度是不用执行程序就能对算法的运行效率进行的评估)
  • 化繁为简(目的是对程序进行分类,便于人们的交流)
  • 通常考虑最坏的情况

1-5时间复杂度的简单计算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QnWn4Dzs-1649337435478)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20220407205734661.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Cu9qU3KK-1649337435478)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20220407205920404.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wZ3ldyad-1649337435478)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20220407210108959.png)]

1-6时间复杂度的极限定义

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KiQHVOzz-1649337435479)(C:\Users\86187\AppData\Roaming\Typora\typora-user-images\image-20220407210847735.png)]
在这里插入图片描述

1-7空间不重要

  • 用户只关心程序的响应速度
  • 在线判题系统(Online Judge)对s时间的关注度远大于空间
  • 程序运行完成后空间可以重复使用

解决问题的思路:

  • 先暴力分析解法的优缺点
  • 空间换时间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值