迪杰斯特拉算法

我写了一个迪杰斯特拉算法代码请帮我分析这个代码
//无向图是用二维矩阵,有向图既可以用二维矩阵,求最小生成树用结构体
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;
        }
    }
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值