我写了一个迪杰斯特拉算法代码请帮我分析这个代码
//无向图是用二维矩阵,有向图既可以用二维矩阵,求最小生成树用结构体
int g[500][500];
void dj(int v,int n){//n是顶点数目
int visit[500]={0};
int dist[500];//存v到顶点的距离
int path[500];//存v到顶点的前驱
int i,j,p;
for(i=1;i<=n;i++){//先对visit,dist,path进行初始化
dist[i]=g[v][i];
path[i]=v;
}
visit[v]=1;//记录当前节点被访问
int m,k;//min记录当前未确定最短路径顶点中的最小距离
for(i=1;i<=n-1;i++){//每一次循环确定一个顶点的最短路径,共n-1次循环
m=10000000;//初始化为很大得值
for(j=1;j<=n;j++){
if(visit[j]==0&&dist[j]<m){
m=dist[j];
k=j;//k记录最小距离对应的顶点
}
}
visit[k]=1;
for(p=1;p<=n;p++){
if(visit[p]==0&&dist[k]+g[k][p]<dist[p]){
dist[p]=dist[k]+g[k][p];
path[p]=k;
}
}
}
}
迪杰斯特拉算法
于 2025-03-07 23:28:45 首次发布