-
问题
对于下图使用Dijkstra算法求由顶点a到顶点h的最短路径, -
Dijkstra算法生成最短距离过程
加入顶点b
加入顶点c
加入顶点f
加入顶点e
加入顶点g
结果
-
设计
for (i = 1; i <= n - 1; i++)
{
//找到离1号顶点最近的顶点
min = inf;
for (j = 1; j <= n; j++)
{
if (book[j] == 0 && dis[j] < min)
{
min = dis[j];
u = j;
}
}
book[u] = 1;
for (v = 1; v <= n; v++)
{
if (e[u][v] < inf)
{
if (dis[v] > dis[u] + e[u][v])
dis[v] = dis[u] + e[u][v];
}
}
}
4.分析
时间复杂度O(n^2)
5.源码
https://github.com/samfsrhv920/algorithm-analysis