Day 21

news/2025/11/9 15:52:51/文章来源:https://www.cnblogs.com/LyYcx/p/19204367

算法复习日:把“似懂非懂”的逻辑磨到通透

原本以为算法复习就是再刷几道题,可坐在电脑前打开之前的笔记才发现,很多算法只是“会写代码”,却没吃透底层逻辑——今天特意放慢节奏,对着二分查找、快速排序这两个“老熟人”死磕,终于把之前模糊的知识点磨得明明白白。

最先攻克的是二分查找的“边界迷思”。之前写代码时,总在“left <= right”和“left < right”之间纠结,有时候能跑通,有时候就陷入死循环,一直没搞懂区别。今天特意找了个有序数组[1,3,5,7,9],分别用两种条件调试:用“left <= right”时,循环结束后left会超过right,适合“查找目标是否存在”;用“left < right”时,循环结束后left等于right,适合“查找目标插入位置”。看着控制台一步步输出left和right的变化,突然懂了:边界条件不是“凭感觉选”,而是由“问题需求”决定的——之前踩的坑,都是因为没把“要找什么”和“边界逻辑”对应起来。

接着复盘快速排序。之前背过“选基准、分区、递归”的口诀,代码也能默写,但一直没明白“为什么选基准要随机化”。今天特意做了对比实验:用固定最左元素当基准,给一个近乎有序的数组排序,耗时居然是随机基准的3倍;查了资料才知道,固定基准在数组有序时会导致递归深度变成O(n),而随机基准能把时间复杂度稳定在O(nlogn)。我赶紧在代码里加上int pivotIndex = left + new Random().nextInt(right - left + 1);,再跑测试用例,效率果然提升不少——原来算法优化不是“炫技”,而是精准解决实际场景中的性能问题。

复习到递归与迭代的转换时,还意外联动了之前学的二叉树。比如把二叉树的深度优先遍历(递归版)改成迭代版,核心就是用栈模拟递归的“调用栈”;而广度优先遍历用队列实现,本质是“先进先出”的顺序控制。看着屏幕上两种遍历的输出结果一致,突然想通了:算法的本质是“逻辑+数据结构”,递归和迭代只是实现方式,核心逻辑都是围绕“如何高效处理数据”展开的——就像二分查找依赖有序数组,快排依赖分区思想,选对数据结构和逻辑,才能写出高效算法。

中途还翻出工程实训时的“图书查询”功能,之前用的是线性查找,遍历整个列表效率很低。今天试着用二分查找优化,先把图书列表按书名排序,再用二分查找匹配关键词,查询速度肉眼可见地变快了。原来算法不是“纸上谈兵”,之前学的知识点真的能直接用到项目里——实训时没优化,就是因为对算法的理解不够深,现在复习完再回头看,优化思路一目了然。

一天复习下来,键盘上敲满了调试代码,笔记本上画满了逻辑流程图。原来算法复习不是“重复刷题”,而是“回头看细节”:搞懂边界条件的由来,理清时间复杂度的优化逻辑,把“会用”变成“懂原理”。那些之前觉得“没必要深究”的细节,恰恰是算法的核心智慧。

晚上打算再练几道“二分查找变种题”,比如查找第一个大于目标值的元素,把今天磨透的边界逻辑再巩固一遍。算法学习就像打磨玉石,只有反复琢磨,才能把“似懂非懂”的模糊点,变成“了然于胸”的通透感~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/960540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025龙信杯个人Wp

服务器基本没做,时间太赶了www 一、 手机镜像检材 (共24题) 1.​ 分析手机镜像,请问机身的Wi-Fi 信号源的物理地址是什么?[标准格式:01:02:03:04:05:06] 00:db:60:6e:86:132.​ 分析手机镜像,请问张大的手机号码尾…

7大AI论文写作工具必备!论文写作辅助神器推荐!

临近毕业季,写毕业论文让不少人痛苦不堪。2025 年 AI 技术飞跃,成为学生的“学术神器”。作者亲自试用全网热门的 7 个 AI 写作工具,其中瑞达写作表现出色。文章详细介绍了包括瑞达写作、QuillBot、图灵论文 AI 写作…

二 C#工程化部署Yolo - 详解

二 C#工程化部署Yolo - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…

flask: 报错:The CSRF token is missing.

一,报错信息 {csrf_token: [The CSRF token is missing.]}二,解决 : 在相应的form中添加:class Meta:csrf = False 例子如下: class AddedForm(FlaskForm):name = StringField(name, validators=[DataRequired(),…

Java数组——二维及多维数组

Java数组——二维及多维数组二维及多维数组 数组嵌套数组,例如:二维数组是一个特殊得一维数组,其中每个元素都是一个一维数组 二维数组 int a[][]= new int [2][3]; 以上数组a可视为二行三列的数组 public class Ar…

详细介绍:MySql复习及面试题学习

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

MATLAB 实现 SRCNN 图像超分辨率重建

MATLAB代码实现,用于基于三层卷积神经网络的图像超分辨率重建。 1. MATLAB代码实现 % 超分辨率卷积神经网络(SRCNN)的测试代码 % 参考文献:Chao Dong, Chen Change Loy, Kaiming He, Xiaoou Tang. % 学习深度卷积网络…

2025.11.03~2025.11.09

2025.11.03~2025.11.09ZJCPC 2022 A Problem \(T\) 组数据。给定正整数 \(a, b\),你需要确定一个正奇数 \(x\) 和一个正偶数 \(y\) 使得 \(a\) 经过最少操作数变成 \(b\):每次选择将当前数 \(+x\) 或 \(-y\)。求最少…

2025年热门的安全检测检验公司综合排名

摘要 随着矿山安全意识的提升,2025年安全检测检验行业迎来快速发展,专注于设备设施检测和监控系统。本文基于行业数据、用户口碑和技术实力,综合评选出排名前十的公司,为矿山企业提供参考。排名表单结合了权威评测…

2025 秋季 洛阳游

故事要从国庆节说起,那时我刚通关 《饿殍:明末千里行》。故事相当的好,看完结局 ⌊ 不见 ⌉ 略有初中时看完 《龙族:黑月之潮》 的感慨。心想,没法去龙族痛城东京,好歹找个机会去洛阳看看满穗吧!结果一看研学路…

详细介绍:Python 2025年10月最新:多平台域名/小程序封禁检测工具

详细介绍:Python 2025年10月最新:多平台域名/小程序封禁检测工具pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

多快省力插件使用帮助说明

本插件使用需要搭配AutoCAD2024使用,其他版本cad不保证使用正常。 中间可能使用了Ps2025、湘源控规9.010、ArcgisPro3.5及CC工具箱。原则上其他工具有方便的功能则不再重复开发。 插件工具目录: 【多图层不变颜色合并…

Java-148 深入浅出 MongoDB 聚合操控:$match、$group、$project、$sort 全面解析 Pipeline 实例详解与性能优化

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

深入解析:vscode-cpptools调试器扩展:监视表达式高级功能

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

免费的vibe coding???

AgentRouter 刷博客园发现了一个公益平台,好像真的是做公益?

人工势场法(APF)路径规划 MATLAB

人工势场法(APF)路径规划 MATLAB2D 平面移动机器人/无人车场景 三连杆机械臂关节空间场景 避障 + 目标吸引可视化 可调 GUI(滑条实时改参数) 常见陷阱(局部极小、振荡)与改进提示一、2D 平面无人车 APF(精简易读…

ABC431 解题报告

A 略。 B 略。 C 很典型的贪心。我们给两个序列降排序后,对每一个身体找到第一个小于它的头部。 D 另一个很典型的贪心。我们先钦定所有部件安装在身体,然后把总重量小于等于 \(\lfloor \dfrac{m}{2} \rfloor\) 的部…

哈佛放屁都是香的?

“我能吞下玻璃而不伤身体”这句话的出处可以追溯到哈佛大学学生Ethan Mollick在1997年创造的一个名为“I Can Eat Glass”的项目‌。 这个项目的初衷是教会人们用非母语说一句简单而地道的话,以令母语者感到惊讶和尊…

使用MATLAB实现平方倍频法对DSSS/BPSK信号进行载频估计

DSSS/BPSK信号模型与平方倍频法原理 信号模型 DSSS/BPSK信号可以表示为: s(t) = Ad(t)c(t)cos(2πf_c t + φ) + n(t)其中:d(t):数据序列(1) c(t):扩频码序列(1) f_c:载波频率(待估计) φ:载波相位 n(t):…

工具:【多图层不变颜色合并】

有的时候,我们想要这样的效果:规划范围外的用地设置透明度。 一般我们可以使用湘源生成全部用地,并用范围线把内外两部分裁剪开,但是外部的区域用地分成了很多的图层,象这样:图层过多造成了很多处理的不方便和统…