16-最短路径:Dijkstra与Floyd
C语言数据结构系列最短路径篇C语言数据结构系列十六最短路径——Dijkstra与Floyd一、前言二、Dijkstra算法2.1 思想2.2 图解2.3 代码实现三、Floyd算法3.1 思想3.2 代码实现四、Dijkstra vs Floyd五、应用六、下篇预告C语言数据结构系列十六最短路径——Dijkstra与Floyd本篇目标掌握Dijkstra单源最短路和Floyd多源最短路算法摘要本文讲解图论中最短路径的两大经典算法——Dijkstra单源最短路贪心思想O(V²)与Floyd全源最短路动态规划O(V³)。通过图解、C 语言代码实现与对比表格帮助读者理解算法原理、适用场景及局限两者均不能处理负权边并给出导航、路由、游戏寻路等典型应用。一、前言哈喽小伙伴们今天我们来学习最短路径——导航软件的核心算法️Dijkstra从一个点到其他所有点的最短路Floyd任意两点之间的最短路二、Dijkstra算法2.1 思想贪心每次选择距离最近的未访问顶点2.2 图解4231A:0B:∞C:∞D:∞2.3 代码实现#defineINF99999voiddijkstra(intgraph[][MAX],intn,intstart){intdist[MAX];bool visited[MAX]{false};intprev[MAX];for(inti0;in;i){dist[i]graph[start][i];prev[i](dist[i]INFi!start)?start:-1;}dist[start]0;visited[start]true;for(intcount1;countn;count){intu-1;for(intv0;vn;v){if(!visited[v](u-1||dist[v]dist[u])){uv;}}if(u-1||dist[u]INF)break;visited[u]true;for(intv0;vn;v){if(!visited[v]dist[u]graph[u][v]dist[v]){dist[v]dist[u]graph[u][v];prev[v]u;}}}printf(从%c出发的最短距离:\n,startA);for(inti0;in;i){printf(到%c: %d\n,iA,dist[i]);}}三、Floyd算法3.1 思想动态规划三重循环逐步更新最短路径3.2 代码实现voidfloyd(intgraph[][MAX],intn){intdist[MAX][MAX];// 初始化for(inti0;in;i){for(intj0;jn;j){dist[i][j]graph[i][j];}}// 三重循环for(intk0;kn;k){for(inti0;in;i){for(intj0;jn;j){if(dist[i][k]dist[k][j]dist[i][j]){dist[i][j]dist[i][k]dist[k][j];}}}}printf(任意两点最短距离:\n);for(inti0;in;i){for(intj0;jn;j){printf(%d ,dist[i][j]);}printf(\n);}}四、Dijkstra vs Floyd特性DijkstraFloyd时间O(V²)O(V³)用途单源最短路全源最短路负权边❌❌空间O(V)O(V²)五、应用导航软件️网络路由游戏AI寻路六、下篇预告下一篇我们将学习拓扑排序与关键路径 Dijkstra不能处理负权边

相关新闻

Opik Optimization Studio 架构与实现:基于 RQ 队列与隔离子进程的 LLM 提示词优化全链路

Opik Optimization Studio 架构与实现:基于 RQ 队列与隔离子进程的 LLM 提示词优化全链路

Opik Optimization Studio 架构与实现:基于 RQ 队列与隔离子进程的 LLM 提示词优化全链路 【免费下载链接】comet-llm Debug, evaluate, and monitor your LLM applications, RAG systems, and agentic workflows with comprehensive tracing, automated evaluation…

2026/9/13 22:45:56 阅读更多 →
双横臂悬架硬点匹配实战:从运动学原理到ADAMS建模与调校

双横臂悬架硬点匹配实战:从运动学原理到ADAMS建模与调校

“双横臂悬架硬点匹配”这几个字,我第一次听是在项目例会上。当时一位老工程师丢过来一张Excel表,里面密密麻麻列了几十个带X、Y、Z坐标的点位,轻描淡写地说:“把这些硬点理顺,悬架就成功一半了。”我盯着那堆数字一头…

2026/9/13 22:45:56 阅读更多 →
DENTIST红外小目标检测实战:训练调参与评价指标解析

DENTIST红外小目标检测实战:训练调参与评价指标解析

简介:面向计算机视觉与红外图像处理研究者,DENTIST-master是一套基于RIPI算法的红外小目标检测实现,涵盖红外图像预处理、噪声过滤、分块目标增强、张量加权融合及PCA特征降维等关键环节,适用于军事敌我识别、安防异常行为检测、无…

2026/9/13 22:45:56 阅读更多 →

最新新闻

POD与DMD全解析:从流场数据提取时空模态的Python实现

POD与DMD全解析:从流场数据提取时空模态的Python实现

简介:面向流体力学与信号处理学习者的POD与DMD算法速览包,聚焦本征正交分解与动态模态分解的原理及MATLAB实现,适合需要快速理解流场降维和动力学特征提取的初学者或研究人员。压缩包内共3个文件,其中POD_DMD.m为可直接运行的MATL…

2026/9/13 23:48:21 阅读更多 →
2012年的ezcaddll.dll怎么处理?依赖分析与冲突修复指南

2012年的ezcaddll.dll怎么处理?依赖分析与冲突修复指南

简介:面向 CAD 软件开发者的 EzCAD DLL 库详解资料,专为需要快速集成图形绘制、几何计算、工程图标注等功能的 C 开发者准备。资源为 rar 压缩包,仅 2 个文件,体积 180KB,轻量且聚焦:.h 头文件声明了 EzCAD…

2026/9/13 23:48:21 阅读更多 →
WorkBuddy连接全攻略:从SSH到数据库的排查方法

WorkBuddy连接全攻略:从SSH到数据库的排查方法

1. 连接的本质:WorkBuddy在开发链路里到底在连什么如果你用过WorkBuddy,大概率有过这种经历:下载装好了,界面也打开了,模型也能聊,可真到干活的时候——连远程服务器连不上,连数据库超时&#x…

2026/9/13 23:48:21 阅读更多 →
C++异常的认识与实践

C++异常的认识与实践

目录 一. 异常的概念 二. 异常的抛出和捕获 2.1 代码示例: 三. 栈展开 四. 查找匹配的代码处理 4.1 代码示例 五. 异常重新抛出 5.1 代码示例:网络请求重试 六. 异常安全问题 6.1 代码示例: 七. 异常规范 八. C的标准库的异常 一…

2026/9/13 23:48:21 阅读更多 →
Kimi    LeetCode 71. 简化路径 C语言实现

Kimi LeetCode 71. 简化路径 C语言实现

LeetCode 71. 简化路径 (C 语言) 思路:与栈的思路一致。path 参数可写,直接在原串上原地分割,用一个指针数组 stack 保存各目录名的起始位置,最后原地拼接结果。 char* simplifyPath(char* path) {int len strlen(path);// 最多 len/2 1 个目录名,外加哨兵 \0char** stack (…

2026/9/13 23:48:21 阅读更多 →
Iosevka 3.2.0 版本详解:字符变体扩展、Unicode 覆盖增强与字形修复实战指南

Iosevka 3.2.0 版本详解:字符变体扩展、Unicode 覆盖增强与字形修复实战指南

Iosevka 3.2.0 版本详解:字符变体扩展、Unicode 覆盖增强与字形修复实战指南 【免费下载链接】Iosevka Versatile typeface for code, from code. 项目地址: https://gitcode.com/GitHub_Trending/io/Iosevka Iosevka 是一款"由代码生成的代码字体"…

2026/9/13 23:47:21 阅读更多 →

日新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/13 0:00:24 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/13 0:00:24 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/13 0:00:24 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/13 0:00:24 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/13 0:00:24 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/13 0:00:24 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/13 16:51:11 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/12 18:29:34 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/12 19:02:44 阅读更多 →