| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1551 人关注过本帖
标题:Prim算法的时间复杂度分析
只看楼主 加入收藏
DSL
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-7-19
收藏
 问题点数:0 回复次数:0 
Prim算法的时间复杂度分析
Prim算法是很经典的一个最小生成树算法,用优先队列实现时间复杂度为O(mlogm)。然后我在HDU做了道题目,提交后时间大概300ms。后来网上搜了个不是用优先队列实现的算法【附此代码如下】,时间只花了大概200ms,但是他的时间复杂度理论上不是应该是O(n*n),应该更慢才是啊,请高手指点这是怎么回事?
代码:
#define MaxSize 105
#define INIT 999999999

int Graph[MaxSize][MaxSize];
long sum;
bool visited[MaxSize];

int NumOfVillage;

void Prim()
{
    int i,j;
    sum = 0;
    int dist[MaxSize];
    int min,locate;
    memset(visited,0,sizeof(visited));
    for(i=1;i<=NumOfVillage;i++)
        dist[i] = Graph[1][i];
    visited[1] = true;
    for (j=1;j<=NumOfVillage;j++)
    {
        min = INIT;
        for (i=1;i<=NumOfVillage;i++)
        {
            if(!visited[i]&&dist[i]<min)
            {
                min = dist[i];
                locate = i;
            }
        }   
        visited[locate] = true;
        for (i=1;i<=NumOfVillage;i++)
        {
            if (!visited[i]&&dist[i]>Graph[locate][i])
            {
                dist[i] = Graph[locate][i];
            }
        }

    }
    for (i=1;i<=NumOfVillage;i++)
    {
        sum+=dist[i];
    }
}
搜索更多相关主题的帖子: Prim 算法 时间 
2010-10-19 22:52
快速回复:Prim算法的时间复杂度分析
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048359 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved