zoukankan      html  css  js  c++  java
  • Algs4-1.5.11实现加权quick-find算法

    1.5.11实现加权quick-find算法,其中我们总是将较小的分量重命名为较大的分量的标识符。这种改变会对性能产生怎样的影响?
    答:每次union需要多访问N次id数组进行判断,同时还需要对两个分量的触点个数的sz赋新值,也会增加数组的访问,性能将会降低。
    public class E1d5d11
    {
        private int[] id;
        private int[] sz;
        private int count;
        public E1d5d11(int N)
        {
            count=N;
            id=new int[N];
            for (int i=0;i<N;i++)
                 id[i]=i;
            //
            sz=new int[N];
            for (int i=0;i<N;i++)
                sz[i]=1;
        }
       
        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;
              int totalSize=sz[p]+sz[q];
              int oldID;
              int newID;
              if(sz[p]<sz[q])
                {
                  oldID=pID;
                  newID=qID;
               }
              else
               {
                  oldID=qID;
                  newID=pID;
              }
             for (int i=0;i<id.length;i++)
                 {
                     if(id[i]==oldID) id[i]=newID;
                     if(id[i]==newID) sz[i]=totalSize;
                  }
               count--;
          }
             //

           public static void main(String[] qrgs)
           {
               int N=StdIn.readInt();
               E1d5d11 uf=new E1d5d11(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

  • 相关阅读:
    mac下使用brew安装mongodb
    从零构建vue+webpack (一)
    常用软件集合(2018/08/22)
    solr集群安装部署
    zookeeper集群部署
    redis集群部署
    linux 安装jdk
    zTab layui多标签页组件
    spring boot集成swagger2
    SSH客户端,FinalShell服务器管理,远程桌面加速软件,支持Windows,Mac OS X,Linux,版本2.6.3.1
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854761.html
Copyright © 2011-2022 走看看