zoukankan      html  css  js  c++  java
  • Algs4-1.5.7实现QuickFindUF类和QuickUnionUF类

    1.5.7分别为quick-find算法和quick-union算法实现QuickFindUF类和QuickUnionUF类。

    public class QuickFindUF

    {

        private int[] id;

        private int count;

        public QuickFindUF(int N)

        {

            count=N;

            id=new int[N];

            for (int i=0;i<N;i++)

                 id[i]=i;

        }

       

        public int count()

        {return count;}

        

         boolean connected(int p,int q)

         {return find(p)==find(q);}

     

         public int find(int p)

         {return id[p];}

          

          public  void union(int p,int q)

           {

              int pID=find(p);

              int qID=find(q);

              if (pID==qID) return;

              for (int i=0;i<id.length;i++)

                  if(id[i]==pID) id[i]=qID;

              count--;

           }

     

        

           public static void main(String[] qrgs)

           {

               int N=StdIn.readInt();

               QuickFindUF uf=new QuickFindUF(N);

               while (!StdIn.isEmpty())

               {

                   int p=StdIn.readInt();

                   int q=StdIn.readInt();

                   if(uf.connected(p,q)) continue;

                   StdOut.println(p+ " " +q);

                   uf.union(p,q);

                }//end while

            }//end main

    }//end class

     

    public class QuickUnionUF

    {

        private int[] id;

        private int count;

        public QuickUnionUF(int N)

        {

            count=N;

            id=new int[N];

            for (int i=0;i<N;i++)

                id[i]=i;

       }

       

       public int count()

       {return count;}

        

       boolean connected(int p,int q)

       {return find(p)==find(q);}

     

     

        public int find(int p)

         {

              while(p!=id[p]) p=id[p];

              return p;

          }

         

          public void union(int p,int q)

          {

              int pRoot=find(p);

              int qRoot=find(q);

              if(pRoot==qRoot) return;

              id[pRoot]=qRoot;

              count--;

          }

     

           public static void main(String[] qrgs)

           {

               int N=StdIn.readInt();

               QuickUnionUF uf=new QuickUnionUF(N);

               while (!StdIn.isEmpty())

               {

                   int p=StdIn.readInt();

                   int q=StdIn.readInt();

                   if(uf.connected(p,q)) continue;

                   StdOut.println(p+ " " +q);

                   uf.union(p,q);

                  

                }//end while

            }//end main

    }//end class

  • 相关阅读:
    Lua的各种资源2
    Lua的各种资源1
    游戏AI:行为树
    关于资源包存储资源路径名的方案
    scrapy爬虫笔记(创建一个新的项目并运行)
    scrapy爬虫笔记(安装)
    运行scrapy报错:You do not have a working installation of the service_identity module
    运行scrapy demo时报错:[twisted] CRITICAL: Unhandled error in Deferred
    python3下使用有道翻译网页版实现翻译功能~~~附源码
    python3+openCV实现图片的人脸人眼检测,原理+参数+源代码
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854703.html
Copyright © 2011-2022 走看看