logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

最短路径之Floyd算法(数据结构)

Floyd算法是由Robert W. Floyd于1962年提出的动态规划算法,用于求解加权图中任意两点间的最短路径。该算法通过三重循环遍历所有可能的中间节点,不断更新邻接矩阵中的最短路径值,核心状态转移方程为dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j])。原始实现使用三维数组(空间复杂度O(n³)),优化后采用二维数组(空间复杂度O(n

文章图片
#算法#数据结构
图的遍历方式(数据结构)

本文介绍了图的两种基本遍历方法:深度优先遍历(DFS)和广度优先遍历(BFS)。DFS采用递归或栈实现,沿着路径深入到底再回溯;BFS使用队列实现,按层次向外扩展。文章通过代码示例展示了两种算法的实现方式,并以LeetCode 200题岛屿数量为例,分析了DFS和BFS在解决实际问题中的应用。

文章图片
#数据结构#深度优先#算法
最小生成树(数据结构)

本文介绍了生成树的概念及其特性,包括连通性、无环性等基本性质。重点讲解了两种求解最小生成树(MST)的经典算法:Kruskal算法通过排序边并利用并查集实现,时间复杂度为O(mlogm);Prim算法采用贪心策略,使用邻接矩阵存储,时间复杂度为O(n²)。文章通过代码示例比较了两种算法的适用场景:Kruskal适合稀疏图,Prim适合稠密图,建议根据实际问题选择合适的算法。

文章图片
#数据结构#算法
拓扑排序及关键路径(数据结构)

本文介绍了有向无环图(DAG)及其在项目管理中的应用。重点阐述了拓扑排序和关键路径算法:1)拓扑排序通过不断移除入度为0的顶点来确定任务执行顺序;2)关键路径通过计算事件的最早/最晚发生时间(ETV/LTV)和活动的最早/最晚开始时间(ETE/LTE),找出决定项目最短工期的关键活动序列。文中提供了C++实现代码,并分析了算法的时间复杂度:拓扑排序和关键路径均为O(n+m)。这些算法为项目管理中的

文章图片
#数据结构#c++
树(数据结构)

树是由n(n≥0)个节点组成的有限集合,包含根节点和叶节点。树的基本概念包括节点的度、层次关系(双亲、兄弟、祖先)以及树的存储结构(双亲表示法、孩子表示法、孩子兄弟表示法)。双亲表示法通过数组存储节点和父节点下标,查找父节点高效但子节点操作复杂;孩子表示法结合数组和链表,便于遍历子节点但查找父节点较慢;孩子兄弟表示法使用二叉链表结构,能高效转换多叉树为二叉树但不便查找父节点。文中提供了三种存储结构

文章图片
#数据结构#c++
到底了