摘要: 责任链模式(Chain of Responsibility) 一、模式定义 责任链模式将请求沿着一条处理者链传递。每个处理者决定是自己处理这个请求,还是传给链上的下一个处理者。发送者不需要知道哪个处理者最终会处理请求。 一句话理解:像公司审批流程——你的请假单先到组长,组长能批就批,批不了就转给经理 阅读全文
posted @ 2026-07-31 09:40 FfHUCisI 阅读(9) 评论(0) 推荐(0)
摘要: 桥接模式 (Bridge Pattern) 一、模式概述 桥接模式的核心理念是:将抽象部分与实现部分分离,使它们可以独立变化。 这句话听起来很抽象,用具体场景来理解:假设你在开发一个图形绘制库,有"形状"(圆形、矩形、三角形)和"渲染器"(OpenGL、DirectX、软件渲染)两个维度。如果用继承 阅读全文
posted @ 2026-07-31 09:40 FfHUCisI 阅读(6) 评论(0) 推荐(0)
摘要: 适配器模式与外观模式 — 结构型设计模式入门 一、结构型设计模式概述 创建型模式解决"怎么创建对象"的问题,而结构型模式解决"怎么组合对象"的问题。它们关注的是类和对象之间的关系与协作方式——如何把不同的模块拼在一起,让它们配合工作而不互相干扰。 结构型模式一共有七种:适配器、外观、代理、装饰器、组 阅读全文
posted @ 2026-07-30 09:35 FfHUCisI 阅读(1) 评论(0) 推荐(0)
摘要: 哈夫曼树与哈夫曼编码 一、哈夫曼树是什么 哈夫曼树(Huffman Tree),也叫最优二叉树,是一种带权路径长度最短的二叉树。它是 David Huffman 在 1952 年提出的,用于解决数据压缩问题。 核心思想非常朴素:出现频率越高的字符,给它越短的编码;出现频率越低的字符,给它越长的编码。 阅读全文
posted @ 2026-07-30 09:35 FfHUCisI 阅读(9) 评论(0) 推荐(0)
摘要: 二叉树 — 节点结构与四种遍历方式 一、二叉树是什么 二叉树是每个节点最多有两个子节点的树形结构,这两个子节点分别称为左子节点和右子节点。它是很多更复杂树结构(二叉搜索树、堆、AVL 树、红黑树)的基石。 理解二叉树不需要太高深的数学知识。你可以把它想象成一个家族树,每一代最多生两个孩子,并且要分清 阅读全文
posted @ 2026-07-29 09:18 FfHUCisI 阅读(13) 评论(0) 推荐(0)
摘要: 创建型设计模式 — 工厂与单例 一、设计模式是干什么的 写代码久了你会发现,很多问题在反复出现:怎么保证全局只有一个数据库连接?怎么根据配置创建不同类型的对象?怎么一步步构建一个参数多到令人发指的结构体? 前辈们把这些问题的最佳解法总结成了设计模式——不是死板的代码模板,而是一种"遇到这种情况就这样 阅读全文
posted @ 2026-07-29 09:17 FfHUCisI 阅读(5) 评论(0) 推荐(0)
摘要: 归并排序(Merge Sort) 一、核心思想 归并排序是分治思想的经典范本,它的策略可以概括为三步: 分:把数组从中间一分为二 治:对两个子数组各自递归排序 合:把两个已排序的子数组合并为一个有序数组 整个过程就像两支各自有序的队伍合并成一支:每次从两队头部取较小的那个放到结果队中,直到两队都排完 阅读全文
posted @ 2026-07-29 09:17 FfHUCisI 阅读(7) 评论(0) 推荐(0)
摘要: 快速排序(Quick Sort) 一、核心思想 快速排序是实际工程中应用最广泛的排序算法,它的设计哲学可以概括为一个词——分治(Divide and Conquer)。 核心思路:选一个元素作为基准(pivot),把数组分成"比 pivot 小"和"比 pivot 大"两部分,然后对这两部分各自递归 阅读全文
posted @ 2026-07-29 09:16 FfHUCisI 阅读(142) 评论(0) 推荐(0)
摘要: 插入排序(Insertion Sort) 一、核心思想 插入排序的灵感来自日常生活中的"整理扑克牌":当你拿到一张新牌时,会把它插到手里已有牌的正确位置,保持手里的牌始终有序。 在算法层面,我们把数组分为两部分——左侧已排序区和右侧未排序区。每一轮从右侧取出一个元素,向左逐个比较,找到合适的位置插入 阅读全文
posted @ 2026-07-29 09:16 FfHUCisI 阅读(18) 评论(0) 推荐(0)
摘要: 堆排序(Heap Sort) 一、前置知识:什么是堆 堆是一种特殊的完全二叉树,用数组来存储(不需要指针),利用索引关系表达父子关系: 父节点索引:parent(i) = (i-1) / 2 左子节点索引:left(i) = 2*i + 1 右子节点索引:right(i) = 2*i + 2 大根堆 阅读全文
posted @ 2026-07-28 11:15 FfHUCisI 阅读(12) 评论(0) 推荐(0)