并查集

并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。

主要作用

解决连接问题
如何在上图这样复杂的图中判断两个点是否是相连的,这就是并查集要解决的

类UnionFind

parent[]存储该节点的父亲节点
public class UnionFind {private int[] parent;private int count;private int[] rank;  //rank[i]表示以i为根的集合所表示的树的层数public UnionFind(int n) {this.parent =new int[n];this.rank=new int[n];this.count = n;for(int i=0;i<n;i++){parent[i]=i;rank[i]=1;}}//查找p的根节点public int find(int p){assert(p>=0&&p<count);
//      while(p!=parent[p]){
//          parent[p]=parent[parent[p]];     //路径压缩优化
//          p=parent[p];
//      }
//      return p;if(p!=parent[p])parent[p]=find(parent[p]);   //更优化的路径压缩return parent[p]; }//若p,q的根节点相同则表明他们连接public boolean isConnected(int p,int q){return find(p)==find(q);}//合并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;    //rank[qRoot]不用更新}else if(rank[qRoot]<rank[qRoot]){parent[qRoot]=pRoot;}else{parent[pRoot]=qRoot;rank[qRoot]+=1;}}}
更优化的路径压缩将一棵树压缩成只有两层,所有子节点只有一个根节点,这样在查找根节点或合并时能更快。

java实现并查集算法相关推荐

  1. 简单易懂的并查集算法以及并查集实战演练

    文章目录 前言 一.引例 二.结合引例写出并查集 1. 并查集维护一个数组 2. 并查集的 并 操作 3. 并查集的 查 操作 4. 基本并查集模板代码实现--第一版(有错误后面分析) 4.1 Jav ...

  2. 并查集算法 | Union-Find Algorithm

    Union-Find Algorithm即并查集算法,常用于解决 动态连通性,判断有向无圈图等问题. 根本上讲,Union-Find算法就和他的名字一样是一种对不相交集数据结构执行两个有用操作的算法, ...

  3. 给我三分钟,带你领略热血江湖中的并查集算法

    你好,我是小黄,一名独角兽企业的Java开发工程师. 校招收获数十个offer,年薪均20W~40W. 感谢茫茫人海中我们能够相遇, 俗话说:当你的才华和能力,不足以支撑你的梦想的时候,请静下心来学习 ...

  4. Union-Find 并查集算法详解

    Union-Find 并查集算法详解 文章目录 Union-Find 并查集算法详解 一.问题介绍 二.基本思路 三.平衡性优化 四.路径压缩 五.总结 六.例题 一.问题介绍 简单说,动态连通性其实 ...

  5. C++并查集算法(详细)

    C++并查集算法 什么是并查集? 并查集写法 详解 例题:洛谷 P3367.[模板]并查集 题意 代码 什么是并查集? 当我们在做图论题目的时候 经常会读到一些长这样的题目描述: -连接 a , b ...

  6. 并查集算法----犯罪团伙(黑科技)

    一.题目描述 犯罪团伙(gang.cpp) 题目描述  警察抓到了n个罪犯,警察根据经验知道他们属于不同的犯罪团伙,却不能判断有多少个团伙,但通过警察的审讯,知道其中的一些罪犯之间相互认识,已知同一犯 ...

  7. 并查集算法总结专题训练

    并查集算法总结&专题训练 1.概述 2.模板 3.例题 1.入门题: 2.与别的算法结合: 3.考思维的题: 4.二维转一维: 5.扩展域并查集&边带权并查集: 4.总结 1.概述 并 ...

  8. 2021年SWPUACM暑假集训day2并查集算法

    什么是并查集 并查集是一种树形的数据结构,顾名思义,它用于处理一些不交集的 合并 及 查询 问题. 它支持两种操作: 1.查找(find):确定某个元素处于哪个子集 2.合并(merge):将两个子集 ...

  9. java---并查集算法_食物链(每日一道算法2022.8.17)

    难度警告!今天的题思路比较复杂,涉及数学知识congruence class 每天一道算法居然已经一个月了啊,期间居然没断更哈哈 呼呼~算法基础课过去三分之一了,啊后面好像越来越难了呜呜呜,还能保持日 ...

  10. 并查集-算法详解及例题(最小生成树问题)

    一.并查集的概念: 并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题.一些常见的用途有求连通子图.求最小生成树的 Kruskal 算法和求 ...

最新文章

  1. python 获取网络图片的大小
  2. Java 线程池必知的8 大拒绝策略
  3. 你连原理都还没弄明白?机甲风暴java破解版下载
  4. C++下关于XML开源库的使用
  5. c语言设计期末考试试题及答案,C语言程序的设计期末考试试题(含答案).pdf
  6. 通过制定编码规范的过程来说明《学会放弃、妥协也是个大进步,也是相当的提高工作效率》...
  7. 双曲线和直线联立公式_圆锥曲线联解公式
  8. 什么是跨域及跨域请求资源的方法?
  9. 计算机云计算中心建设项目,某大学计算机云计算云数据中心建设方案.docx
  10. Gym 100801D Distribution in Metagonia (数学思维题)
  11. python编程题字符串的美化_Python编程题15--RGB字符串排序
  12. Java并发编程实战 - 笔记
  13. 2022年智能电梯行业研究报告
  14. Flex布局(弹性布局)-图文介绍
  15. 推荐一个可以连gmail的邮箱
  16. 以为精通Java 线程池,看到这些误区,还是年轻了
  17. larval 捕获mysql错误_larval 如何捕获mysql错误
  18. 敖丙带你设计【秒杀系统】
  19. Blender软件使用Maps Models Importer插件导入Google地图3d模型(非常简单)
  20. Algorithms学习笔记-第一章 基础

热门文章

  1. 大气压力换算公式_大气压怎么算
  2. PCA+SVM进行人脸识别(ORL人脸数据集分类)
  3. 人人视频android app,人人视频安卓版
  4. 永洪bi logo更换
  5. DS-5 Streamline
  6. 联合概率分布、边缘概率分布
  7. Java入门级项目 汽车租赁系统
  8. 如何选择好的健身房管理系统而且还不收费
  9. VBS教程---第一篇
  10. 在线URL编码加密工具