zoukankan      html  css  js  c++  java
  • 并查集-----集合以及计算----

    集合的表示

      集合运算:交 , 差 , 并 , 补 , 判定一个元素是否属于某一集.?

      并查集:  集合 并 , 查 某元素属于什么集合?

      并查集问题中集合储存如何实现?

            可以 用 树结构

    /*先找  需要寻找元素的X的位置*/
    int
    Find( SetType S[ ], ElementType X )//在数组S中查找 X { /* 在数组S 中查找值为X 的元素所属的集合 */ /* MaxSize 是全局变量 , 为数组S 的最大长度 */ int i; for ( i=0; i < MaxSize && S[i].Data != X; i++) ; if( i >= MaxSize ) return -1; /* 未找到X , 返回-1 */ for( ; S[i].Parent >= 0; i = S[i].Parent ) ; return i; /* 找到X 所属集合 , 返回树根结点在数组S 中的下标 */ }
      /*找到X之后我们开始去她的祖先,最后我们返回的是需要寻找元素的祖先.*/

     ------------------下面开始并运算------------------------------------

        分别找到X1和X2两个元素所在的集合树的根节点(在上面我们已经有代码去实现如何寻找其所在集合了.)

        如果他们不同根,则将其中一个根节点的父节点指针设置成另一个根节点的数组下标.

    /*轻而易举的就实现了*/
    void Union( SetType S[ ], ElementType X1, ElementType X2 )
    {
        int Root1, Root2;
        Root1 = Find(S, X1);
        Root2 = Find(S, X2);
        if ( Root1 != Root2  )S[Root2].Parent = Root1;
    }

    为了改善合并以后树的高度,我们可以将小的集合合并到相对打的集合中.

    -----------------------终于结束了------------下面就要开始图了------我想陈越阿姨了------

  • 相关阅读:
    php 数组转xml 数组转json xml转数组 json转数组
    SEO新手必须掌握的七个基本功
    zen cart主要文件说明
    十二个月内,仅仅依靠Google打造成功网站,《SEO界的圣经》
    Zencart 忘记管理员密码怎么办?
    zencart后台设置指南
    zen cart模板怎么进行二次开发修改
    增加反向链接的35个技巧
    ZenCart目录说明
    Zen Cart 添加新页面的四种方法
  • 原文地址:https://www.cnblogs.com/A-FM/p/5148231.html
Copyright © 2011-2022 走看看