算法与数据结构(Python实现)
文章平均质量分 94
算法与数据结构(Python实现)
lcreek
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
探索网络结构:BFS、DFS 与拓扑排序
本文深入讲解图遍历的两大基础算法BFS和DFS及其应用。BFS采用队列实现层层递进的搜索,适合网络发现和最短路径查找;DFS通过栈或递归深入探索路径,适用于环检测和拓扑排序。文章通过实例图解和代码实现详细演示了BFS算法在网络拓扑中的应用,包括数据结构设计和完整Python实现。这两种算法为系统探索图结构提供了核心方法,在网络发现、依赖分析等场景中发挥关键作用。原创 2026-03-28 09:23:40 · 796 阅读 · 0 评论 -
流量优化之道:Ford-Fulkerson 最大流算法
本文深入解析了网络流问题的经典算法Ford-Fulkerson,探讨其在带宽分配、交通优化等实际场景中的应用。文章首先介绍了网络流的基本概念和关键术语,包括残量网络、增广路径和割的定义。通过图解详细阐述了Ford-Fulkerson算法的核心思想——通过不断寻找增广路径来增加流量,直至达到最大流。文中还揭示了最大流最小割定理的深刻内涵,并提供了算法的数据结构设计和Python实现代码。该算法为解决各类容量受限的网络优化问题提供了理论基础和实用工具。原创 2026-03-29 16:36:14 · 359 阅读 · 0 评论 -
构建最优网络:Prim 与 Kruskal 算法
本文介绍了最小生成树(MST)的两种经典算法——Prim和Kruskal算法。Prim算法采用贪心策略,从任意节点开始,逐步选择连接已访问和未访问节点的最小权重边,适用于稠密图;Kruskal算法则从边入手,使用并查集结构按权重升序选择边,适合稀疏图。文章通过公司网络布线的实际案例,说明MST在网络拓扑设计、光缆铺设等场景的应用价值,并对比了两种算法的时间复杂度均为O(E log V)但适用场景不同的特点。最后给出了Prim算法的完整Python实现。原创 2026-03-28 09:22:48 · 351 阅读 · 0 评论 -
Bellman-Ford、SPFA 与 Floyd-Warshall:动态规划的力量
本文介绍基于动态规划的最短路径算法,包括Bellman-Ford、SPFA和Floyd-Warshall算法。重点讲解Bellman-Ford算法的核心思想、实现细节和优化方法,通过实例演示如何处理含负权边的网络路径问题。文章还对比了动态规划与贪心策略的区别,说明动态规划在处理负权边时的优势。最后给出完整的Python代码实现,包括路径重构和负权环检测功能。原创 2026-03-27 11:14:51 · 441 阅读 · 0 评论 -
从 Dijkstra 到 A*:贪心策略与启发式搜索
本文深入讲解两种基于贪心策略的最短路径算法:Dijkstra和A*。首先概述最短路径问题及其在网络路由、导航系统等场景的应用。然后重点解析Dijkstra算法的贪心思想,通过实例演示其执行过程,包括数据结构设计和完整Python实现。Dijkstra算法从起点均匀扩展搜索,而A则利用启发式信息进行更智能的路径选择。文章通过迷宫寻路的比喻形象说明两者的核心区别:Dijkstra是"盲目搜索",A是"智能搜索"。作为系列第二篇,本文为后续讲解动态规划类算法奠定了基础。原创 2026-03-27 11:13:36 · 828 阅读 · 0 评论 -
计算机网络与图算法:从理论到实践
本文是《图算法与计算机网络》系列的开篇,探讨了计算机网络与图结构的本质联系。文章指出网络设备(路由器、交换机)对应图的节点,连接对应边,网络参数(延迟、带宽)作为边权重。通过实际案例展示了互联网拓扑如何抽象为有向加权图,并梳理了网络问题与图论问题的对应关系。文章还回顾了图的基本概念、存储结构(邻接矩阵、邻接表、边列表)及适用场景,最后分类介绍了最短路径、最小生成树等核心算法及其网络应用。原创 2026-03-26 16:35:50 · 753 阅读 · 0 评论 -
三种建图方式Python实现
本文介绍了三种图的存储方式:邻接矩阵、邻接表和链式前向星。邻接矩阵适合稠密图,查询快但空间复杂度高;邻接表适合稀疏图,节省空间;链式前向星在竞赛中效率最高。文章详细说明了每种方式的实现代码、使用示例和优缺点对比,并提供了实战建议:邻接矩阵用于稠密图,邻接表适合Python实现,链式前向星适用于竞赛场景。三种方式各有优劣,应根据具体场景选择最合适的存储结构。原创 2026-03-11 17:28:36 · 503 阅读 · 0 评论 -
Python 列表与数组:从语法糖到内存底层的深度剖析
本文深入分析了Python中列表与数组的内存模型差异。通过解析lst = [0] * n初始化语句,揭示了列表作为动态指针数组的本质,以及数组作为连续数据块的优势。重点剖析了Python整数对象的28字节内存开销来源,包括对象头(16字节)、大小信息(8字节)和数字存储区(4字节)。文章对比了不同数据结构在内存分配、缓存效率等方面的表现,指出列表适合通用场景而数组更适合大规模数值存储。最后详细解读了ob_size字段的双重功能,既记录长度又表示符号,并讨论了这种设计对内存管理和性能的影响。原创 2026-03-08 10:45:39 · 352 阅读 · 0 评论 -
堆排序中的建堆机制与数组实现原理
堆排序的核心在于自底向上的建堆策略和数组实现方式。建堆通过线性时间复杂度O(n)将无序数组转换为堆结构,其关键在于从最后一个非叶子节点开始进行向下调整。数组实现充分利用完全二叉树的规则性,通过简单数学计算定位父子节点,相比链表节省空间且提升缓存命中率,使操作效率提升3-10倍。数据结构的选择应基于其拓扑规律,堆的数组实现完美契合了完全二叉树的结构特性和现代计算机体系结构,实现了空间与时间的双重优化。理解这些原理对掌握堆排序及其应用场景至关重要。原创 2026-02-03 11:08:12 · 624 阅读 · 0 评论 -
并查集原理与实现
并查集是一种高效的树型数据结构,用于处理不相交集合的合并与查询问题。其核心通过数组维护森林结构,支持查找(Find)和合并(Union)两大操作,并采用路径压缩和按秩合并优化策略,将时间复杂度降至近O(1)。实际应用中推荐按大小(Size)合并策略,便于扩展功能。典型应用包括动态连通性判断、最小生成树算法等。标准Python实现包含初始化、查找、合并等基本操作,但不支持分裂操作,需注意递归深度和线程安全等问题。并查集特别适合需要频繁判断和合并集合的动态场景。原创 2026-03-09 11:33:43 · 993 阅读 · 0 评论
分享