图的最短路径问题,Dijkstra和Floyd各有一套玩法。一个追求局部最优,一个强调全局更新,风格迥异。你要是只关心起点到其他点的距离,用 Dijkstra 就挺顺手的,效率高,逻辑清晰;但如果你想一次性搞定所有点对之间的距离,那 Floyd 真的是一劳永逸。是做交通路网、地图系统啥的,还蛮常见。
数据结构方面,Dijkstra常用数组或优先队列配合搞定节点选择,速度快;而Floyd就全靠二维数组撑场面了,直接暴力更新每一组节点对,思路也简单。两个算法都经典,理解透了,后面优化图相关功能也更有底气。
想系统看看实现细节,可以参考这两篇文章,讲得还蛮清楚的:Dijkstra 算法的数组存储数据结构 和 Floyd 算法在数据结构中的应用。另外,数据结构的基础打牢也关键,不妨看看 数据结构与算法 那篇资料,挺全面。
如果你正在搞图算法,建议都试试这两个思路,写个 demo 比较一下。看你是更偏性能,还是偏全局可视化。顺手提醒一句,二维数组
空间复杂度不小,场景不合适的时候别硬用。