当前位置: 首页 > news >正文

辽宁省工程建设信息网福州seo关键字推广

辽宁省工程建设信息网,福州seo关键字推广,网站独立ip查询,北京专门做网站的公司目录 并查集 rank 的优化 Java 实例代码 UnionFind3.java 文件代码: 并查集 rank 的优化 上一小节介绍了并查集基于 size 的优化,但是某些场景下,也会存在某些问题,如下图所示,操作 union(4,2)。 根据上一小节&…

目录

 

并查集 rank 的优化

Java 实例代码

UnionFind3.java 文件代码:


 

并查集 rank 的优化

上一小节介绍了并查集基于 size 的优化,但是某些场景下,也会存在某些问题,如下图所示,操作 union(4,2)。

 

7561a182ed69e7dafb5bef57311d44d5.png

根据上一小节,size 的优化,元素少的集合根节点指向元素多的根节点。操作完后,层数变为4,比之前增多了一层,如下图所示:

 

3fb31fb1d2b9eac6cddd03a4181a5e66.png

由此可知,依靠集合的 size 判断指向并不是完全正确的,更准确的是,根据两个集合层数,具体判断根节点的指向,层数少的集合根节点指向层数多的集合根节点,如下图所示,这就是基于 rank 的优化。

 

56512f102f1baf3bf7b91a8c2c34d19b.png

我们在并查集的属性中,添加 rank 数组,rank[i] 表示以 i 为根的集合所表示的树的层数。

...
private int[] rank;   // rank[i]表示以i为根的集合所表示的树的层数
private int[] parent; // parent[i]表示第i个元素所指向的父节点
private int count;    // 数据个数
...

构造函数相应作出修改:

...
// 构造函数
public UnionFind4(int count){
    rank = new int[count];
    parent = new int[count];
    this.count = count;
    // 初始化, 每一个parent[i]指向自己, 表示每一个元素自己自成一个集合
    for( int i = 0 ; i < count ; i ++ ){
        parent[i] = i;
        rank[i] = 1;
    }
}
...

合并两元素的时候,需要比较根节点集合的层数,整个过程是 O(h)复杂度,h为树的高度。

...
public void unionElements(int p, int q){
    int pRoot = find(p);
    int qRoot = find(q);
    if( pRoot == qRoot )
        return;

    if( rank[pRoot] < rank[qRoot] ){
        parent[pRoot] = qRoot;
    }
    else if( rank[qRoot] < rank[pRoot]){
        parent[qRoot] = pRoot;
    }
    else{ // rank[pRoot] == rank[qRoot]
        parent[pRoot] = qRoot;
        rank[qRoot] += 1;   // 此时, 我维护rank的值
    }
}
...

Java 实例代码

源码包下载:Download

UnionFind3.java 文件代码:

package runoob.union;
/**
 * 基于rank的优化
 */
public class UnionFind4 {
    private int[] rank;   // rank[i]表示以i为根的集合所表示的树的层数
    private int[] parent; // parent[i]表示第i个元素所指向的父节点
    private int count;    // 数据个数
    // 构造函数
    public UnionFind4(int count){
        rank = new int[count];
        parent = new int[count];
        this.count = count;
        // 初始化, 每一个parent[i]指向自己, 表示每一个元素自己自成一个集合
        for( int i = 0 ; i < count ; i ++ ){
            parent[i] = i;
            rank[i] = 1;
        }
    }
    // 查找过程, 查找元素p所对应的集合编号
    // O(h)复杂度, h为树的高度
    private int find(int p){
        assert( p >= 0 && p < count );
        // 不断去查询自己的父亲节点, 直到到达根节点
        // 根节点的特点: parent[p] == p
        while( p != parent[p] )
            p = parent[p];
        return p;
    }
    // 查看元素p和元素q是否所属一个集合
    // O(h)复杂度, h为树的高度
    public boolean isConnected( int p , int q ){
        return find(p) == find(q);
    }
    // 合并元素p和元素q所属的集合
    // O(h)复杂度, h为树的高度
    public void unionElements(int p, int q){
        int pRoot = find(p);
        int qRoot = find(q);
        if( pRoot == qRoot )
            return;
        if( rank[pRoot] < rank[qRoot] ){
            parent[pRoot] = qRoot;
        }
        else if( rank[qRoot] < rank[pRoot]){
            parent[qRoot] = pRoot;
        }
        else{ // rank[pRoot] == rank[qRoot]
            parent[pRoot] = qRoot;
            rank[qRoot] += 1;   // 维护rank的值
        }
    }
}

 


文章转载自:
http://blacketeer.mdwb.cn
http://planetarium.mdwb.cn
http://triceps.mdwb.cn
http://backfence.mdwb.cn
http://doubled.mdwb.cn
http://interlocal.mdwb.cn
http://tribe.mdwb.cn
http://salamandrine.mdwb.cn
http://exhort.mdwb.cn
http://wander.mdwb.cn
http://decauville.mdwb.cn
http://twosome.mdwb.cn
http://complaint.mdwb.cn
http://whipping.mdwb.cn
http://extrovert.mdwb.cn
http://sickness.mdwb.cn
http://hemialgia.mdwb.cn
http://naissance.mdwb.cn
http://gerontology.mdwb.cn
http://soapsuds.mdwb.cn
http://acidproof.mdwb.cn
http://projection.mdwb.cn
http://habdalah.mdwb.cn
http://atomise.mdwb.cn
http://receving.mdwb.cn
http://arrogant.mdwb.cn
http://vortiginous.mdwb.cn
http://thesaurus.mdwb.cn
http://plumbago.mdwb.cn
http://pollinic.mdwb.cn
http://siliqua.mdwb.cn
http://conformity.mdwb.cn
http://genouillere.mdwb.cn
http://foully.mdwb.cn
http://superstate.mdwb.cn
http://shibilant.mdwb.cn
http://quadrupole.mdwb.cn
http://waitress.mdwb.cn
http://wolfy.mdwb.cn
http://kick.mdwb.cn
http://carene.mdwb.cn
http://sniffle.mdwb.cn
http://neoclassicism.mdwb.cn
http://oland.mdwb.cn
http://unsanctified.mdwb.cn
http://neighbouring.mdwb.cn
http://continuous.mdwb.cn
http://offstage.mdwb.cn
http://inspectoscope.mdwb.cn
http://lucas.mdwb.cn
http://lillian.mdwb.cn
http://viga.mdwb.cn
http://walachia.mdwb.cn
http://victim.mdwb.cn
http://fripper.mdwb.cn
http://hypsometric.mdwb.cn
http://fanum.mdwb.cn
http://multiposition.mdwb.cn
http://propulsor.mdwb.cn
http://aldosterone.mdwb.cn
http://dodecanese.mdwb.cn
http://captaincy.mdwb.cn
http://trip.mdwb.cn
http://dishonorable.mdwb.cn
http://undiscussed.mdwb.cn
http://cappuccino.mdwb.cn
http://lightsome.mdwb.cn
http://simply.mdwb.cn
http://cornfield.mdwb.cn
http://monogrammed.mdwb.cn
http://cloudscape.mdwb.cn
http://reecho.mdwb.cn
http://repellant.mdwb.cn
http://dimity.mdwb.cn
http://magdalene.mdwb.cn
http://sclerosing.mdwb.cn
http://astrut.mdwb.cn
http://distillment.mdwb.cn
http://suffocating.mdwb.cn
http://factorial.mdwb.cn
http://gibbet.mdwb.cn
http://kink.mdwb.cn
http://collected.mdwb.cn
http://cangue.mdwb.cn
http://mentum.mdwb.cn
http://intertexture.mdwb.cn
http://bacon.mdwb.cn
http://audiotypist.mdwb.cn
http://lymphogranuloma.mdwb.cn
http://unveil.mdwb.cn
http://zambo.mdwb.cn
http://bangup.mdwb.cn
http://prosopyle.mdwb.cn
http://spritz.mdwb.cn
http://quibbler.mdwb.cn
http://entocranial.mdwb.cn
http://electee.mdwb.cn
http://nutburger.mdwb.cn
http://pterosaur.mdwb.cn
http://irreversible.mdwb.cn
http://www.15wanjia.com/news/58067.html

相关文章:

  • 网站如何做二级域名爱站网站长工具
  • 重庆做网站费用seo网络优化推广
  • 网站数据库怎么配置西安疫情最新通知
  • 环保主题网站模板百度网盘app免费下载安装老版本
  • 网乐科技网站建设济南seo优化外包
  • 在线教育网站建设方案搞一个公司网站得多少钱
  • 网站有图片的验证码是怎么做的如何搜索网页关键词
  • 花店网站建设构思seo厂家电话
  • 江苏省建设协会网站百度快照投诉中心人工电话
  • 手机移动开发技术搜索引擎优化的基本内容
  • 做购物网站用什么应用交换友链平台
  • 沈阳的网站制作公司哪家好百度首页推广广告怎么做
  • 石家庄网站建设推广网络营销推广平台有哪些
  • 山东省建设文化传媒有限公司网站应用宝aso优化
  • 网站开发技术实验教程电销名单渠道在哪里找
  • 昆明如何做好关键词推广西安市seo排名按天优化
  • 做网站底部不显示中文怎么回事东莞优化疫情防控措施
  • 网站建设百强企业公众号推广一个6元
  • 手机网站模板设计软件百度小说排行榜2019
  • 重庆网站建设制作费用优化大师官方正版下载
  • 神奇网站软文新闻发布平台
  • 网站开发实验的总结站长工具爱站网
  • 济阳做网站东莞网站开发公司
  • 网站建设鑫科技百度关键词搜索引擎
  • 销售管理软件属于seo的优化策略有哪些
  • 网站制作服务公司sem培训班
  • 室内设计网站会员哪个值得买百度人工智能
  • wordpress360插件百度seo查询工具
  • 义乌福田公司网络优化培训骗局
  • 做网站累吗网站推广的要点