• Algs4-1.5.12使用路径压缩的quick-union算法


    1.5.12使用路径压缩的quick-union算法。根据路径压缩修改quick-union算法(请见1.5.2.3节),在find()方法中添加一个循环来将从p到根节点的路径上的每个触点都连接到根节点。给出一列输入,使该方法能够产生一条长度为4的路径。注意:该算法的所有操作的均摊成本已知为对数级别。
    答:
    0-1
    1-2
    2-3
    3-4
    图片
    图片
    tinyUF.txt
    5
    0
    1
    1
    2
    2
    3
    3
    4

    public class E1d5d12
    {
        private int[] id;
        private int count;
        public E1d5d12(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)
         {
            int temp=p;
            //find root
            while(p!=id[p]) p=id[p];
            int root=p;
            //set all node's father is root
            p=temp;
             while(root!=id[p])
              {
                  temp=id[p];
                  id[p]=root;
                  p=temp;
              }
              return root;
          }
         
          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();
               E1d5d12 uf=new E1d5d12(N);
               while (!StdIn.isEmpty())
               {
                   int p=StdIn.readInt();
                   int q=StdIn.readInt();
                   if(uf.connected(p,q)) continue;
                   StdOut.printf("p=%d q=%d ",p,q);
                   uf.union(p,q);
                  
                }//end while
            }//end main
    }//end class
  • 相关阅读:
    SQL 大数据查询如何进行优化?
    事件和委托的区别
    虚方法(virtual)和抽象方法(abstract)的和接口(interface)的区别
    高并发的秒杀
    C#算法
    口试C#概念
    口试Linq题
    口试大数据及大并发问题
    Windows下MongoDB安装
    MongoDB简单介绍
  • 原文地址:https://www.cnblogs.com/longjin2018/p/9854765.html
Copyright © 2020-2023  润新知