码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA算法1——连通性问题之快速查找算法

时间:2015-03-20 18:58:12      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:合并   连通性   java算法   快速查找算法   

    假设现在有一个整数对序列,每个整数对代表某周类型的对象,我们用P-Q对表示“P链接到Q”。我们假设这种关系具有传递性,即如果p链接到q,而q又连接到r,则p连接到r。

    下面的程序是一个简单算法的实现,这个算法是解决连通性问题的快速查找算法。该算法的基础是一个整数数组,当且仅当第p个数组元素和第q个数组元素是相等的,则p与q是相连的。我们把第i个元素初始化为i(0 ≤i≤N)。要完成p和q的合并操作,需要搜索整个数组,把所有与第p个数组元素相同的元素全部改为第q个数组元素的值。

    

public class QuickFind
{
    public static void main(String[] args)
    {
        int N=Integer.parseInt(args[0]);
        int id[]=new int[N];
        for(int i=0;i<N;i++)
        id[i]=i;
        for(In.init();!In.empty();)
        {    
            int p=In.getInt(),q=In.get();
            int t=id[p];
            if(t==id[q])
            continue;
            for(int i=0;i<N;i++)
            if(id[i]==t)
            id[i]=id[q];
        }
    }
}

    为了实现查找操作,我们只需检查所指示的数组元素值是否相等,另一方面,合并操作需要为每一对输入扫描一次整个数组。

    性质:快速查找算法要解决N个对象的连通性问题,需要进行M次合并操作,至少要执行MN条指令。

    现代计算机计算能力很强,如果M和N都很小的话,算法对性能影响不大,但是在现代应用中,可能需要处理几十亿个对象和数百万个输入对,所以这种快速查找算法已经不适合解决此类问题。

本文出自 “飞鱼技术” 博客,请务必保留此出处http://flyingfish.blog.51cto.com/9580339/1622541

JAVA算法1——连通性问题之快速查找算法

标签:合并   连通性   java算法   快速查找算法   

原文地址:http://flyingfish.blog.51cto.com/9580339/1622541

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!