数据结构学习笔记-并查集

“查”操作:确定一个指定元素所属集合。

“并”操作:将两个不相交的集合并为一个。

1.用双亲表示法实现并查集

#define SIZE 13
int UFSets[SIZE];    //集合元素数组//初始化并查集
void Initial(int S[]){for(int i=0;i<SIZE;i++)S[i]=-1;
}//Find "查"操作,找x所属集合(返回x所属根结点)
int Find(int S[],int x){while(S[x]>=0)    //循环寻找x的根x=S[X];return x;    //根的S[]小于0
}//Union “并”操作,将两个集合合并为一个
void Union(int S[],int Root1,int Root2){//要求Root1与Root2是不同的集合if(Root1==Root2)return;//将根Root2连接到另一根Root1下面S[Root2]=Root1;
}

2.Union操作的优化

①用根结点的绝对值表示树的结点总数

②Union操作,让小树合并到大树

//Union "并"操作,小树合并到大树
void Union(int S[],int Root1,int Root2){if(Root1==Root2)return;if(S[Root2]>S[Root1]){    //Root2结点数更少S[Root1]+=S[Root2];    //累加结点总数S[Root2]=Root1;    //小树合并到大树}else{S[Root2]+=S[Root1];    //累加结点总数S[Root1]=Root2;    //小树合并到大树}
}

3.Find操作的优化(压缩路径)

先找到根结点,再将查找路径上所有结点都挂到根结点下。

//Find “查”操作优化,先找到根结点,再进行“压缩路径”
int Find(int S[],int x){int root = x;while(S[root]>=0)root=S[root];    //循环找到根while(x!=root){    //压缩路径int t=S[x];    //t指向x的父节点S[x]=root;    //x直接挂到根结点下x=t;}return root;    //返回根结点编号
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/853319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GDB:从零开始入门GDB

目录 1.前言 2.开启项目报错 3.GDB的进入和退出 4.GDB调试中查看代码和切换文件 5.GDB调试中程序的启动和main函数传参 6.GDB中断点相关的操作 7.GDB中的调试输出指令 8.GDB中自动输出值指令 9.GDB中的调试指令 前言 在日常开发中&#xff0c;调试是我们必不可少的技能。在专业…

408数据结构-图的遍历 自学知识点整理

前置知识&#xff1a;图的存储与基本操作 图的遍历是指从图的某一顶点出发&#xff0c;按照某种搜索方法沿着图中的边对图中的所有顶点访问一次&#xff0c;且仅访问一次。因为树是一种特殊的图&#xff0c;所以树的遍历实际上也可以视为一种特殊的图的遍历。图的遍历算法是求解…

利用鱼骨图进行项目问题复盘与改进

一、引言 在项目管理中&#xff0c;问题复盘是一个至关重要的环节。它不仅能帮助我们识别项目执行过程中出现的问题&#xff0c;还能促使我们深入探究问题的根本原因&#xff0c;从而采取有效的改进措施。在这个过程中&#xff0c;鱼骨图作为一种强大的工具&#xff0c;为我们…

MEMS:Lecture 16 Gyros

陀螺仪原理 A classic spinning gyroscope measures the rotation rate by utilizing the conservation of angular momentum. 经典旋转陀螺仪通过利用角动量守恒来测量旋转速率。 Coriolis Effect and Coriolis Force 科里奥利效应是一种出现在旋转参考系中的现象。它描述了…

Internet Download Manager ( 极速下载器 ) 序列号注册码 IDM下载器注册机中文激活破解版

IDM下载器(Internet Download Manager)是一款专业的下载管理软件&#xff0c;它通过多线程技术和智能文件分段技术&#xff0c;有效提升下载速度&#xff0c;并支持断点续传&#xff0c;还具有计划下载功能&#xff0c;用户可以设置特定的下载时间&#xff0c;非常适合需要在特…

代码随想录算法训练营刷题复习1 :动态规划背包问题 01背包+完全背包

动态规划刷题复习 一、01背包 416. 分割等和子集1049. 最后一块石头的重量 II494. 目标和474. 一和零 416. 分割等和子集 class Solution { public:bool canPartition(vector<int>& nums) {int sum0;for(int i0;i<nums.size();i) {sumnums[i];}if(sum%2!0)retu…

IP地址、子网掩码、网段、网关

前面相同就是在同一个网段 如果子网掩码和网络号相与的结果是一样的&#xff0c;那么他们就在同一个子网 IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?_掩码248可以用几个ip-CSDN博客

mmsegmentation使用记录

问题1. AssertionError: MMCV2.2.0 is used but incompatible. Please install mmcv>2.0.0rc4. (openmmlab) rootautodl-container-92154ba0e6-51e9a975:~/mmsegmentation# python demo/image_demo.py demo/demo.png configs/pspnet/pspnet_r50-d8_4xb2-40k_cityscapes-512…

谷歌上架,APP被移除了,没封号,换个包名还能重新提审上架?

对于在Google Play上架应用的开发者来说&#xff0c;尤其是那些矩阵式上架马甲包的开发者&#xff0c;可能已经遭遇过无数次应用被暂停或移除的情况了。通常这种情况下&#xff0c;账号也随之会被封&#xff0c;且大多数开发者认为&#xff0c;没有立马收到封号邮件的话&#x…

基于scikit-learn的机器学习分类任务实践——集成学习

一、传统机器学习分类流程与经典思想算法简述 传统机器学习是指&#xff0c;利用线性代数、数理统计与优化算法等数学方式从设计获取的数据集中构建预测学习器&#xff0c;进而对未知数据分类或回归。其主要流程大致可分为七个部分&#xff0c;依次为设计获取数据特征集&#x…

【C++】stack、queue和deque的使用

&#x1f497;个人主页&#x1f497; ⭐个人专栏——C学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 目录 导读 一、stack 1. stack介绍 2. stack使用 二、queue 1. queue介绍 2. queue使用 三、deque 1. deque介绍 2. deque的…

【Pandas驯化-01】一文介绍 Pandas中的Dataframe和Series 区别

【Pandas】驯化-01一文介绍 Pandas中的Dataframe和Series 区别 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 相关内容文档获取 微信公众…

web前端 Socket:深入探索与实战应用

web前端 Socket&#xff1a;深入探索与实战应用 在Web开发领域&#xff0c;Socket技术以其独特的实时通信能力&#xff0c;为前端开发者提供了全新的交互体验。然而&#xff0c;对于初学者来说&#xff0c;Socket的复杂性和多变的应用场景往往令人感到困惑和挑战。本文将从四个…

用helm安装chart的时候如何使用master的IP

在 Helm chart 中获取 Kubernetes 集群的 master IP 并在安装时将其作为环境变量传递给 Pod 是特定场景下的一个常见需求。要实现这一点&#xff0c;你通常需要两个步骤&#xff1a;首先获取 master 节点的 IP 地址&#xff0c;然后在 Helm chart 的 template 文件中将该 IP 作…

JS常见的运算符有哪些?

在JavaScript中&#xff0c;常见的运算符可以分为以下几类&#xff1a; 算术运算符&#xff1a; &#xff1a;加法-&#xff1a;减法*&#xff1a;乘法/&#xff1a;除法%&#xff1a;取余&#xff08;模运算&#xff09;&#xff1a;递增--&#xff1a;递减**&#xff1a;幂运…

第九届星华杯网络邀请赛

T1喵星人的身高 T2犇犇碑 T3嘤嘤词典 T4三角区间和

简单Mesh多线程合并,使用什么库性能更高

1&#xff09;简单Mesh多线程合并&#xff0c;使用什么库性能更高 2&#xff09;Unity Semaphore.WaitForSignal耗时高 3&#xff09;VS编辑的C#代码注释的中文部分乱码 4&#xff09;变量IntPtr m_cachePtr切换线程后变空 这是第389篇UWA技术知识分享的推送&#xff0c;精选了…

HBase中Master初始化错误~

ERROR&#xff1a;org.apache.hadoop.hbase.PleaseHoldException:Master is initializing 1、停止HBase运行 2、启动zookeeper中的zkCli.sh服务 ./zookeeper/bin/zkCli.sh 3、执行完毕显示以下结果,删除habse文件夹 4、重新启动HBase即可。

python-02

面向对象 Python中把具有相同属性和方法的对象归为一个类。 class ClassName: 语句 class Myclass: # 定义类Myclassdef pp(self): # 定义方法pp()print("这是产品说明书")myclass Myclass() # 实例化类Myclass myclass.pp() # 调用Myclass中的方法pp()打印…

《幻影大师:透视缠中说禅的虚像与真相》

而且他从不犯错&#xff0c;至少在他的叙述中是这样&#xff0c;所有的文章和言论都被粉饰得完美无瑕&#xff0c;即便有误&#xff0c;他也绝不公开承认&#xff0c;更别提什么真诚的道歉和改正了。那些对他推崇备至的人&#xff0c;多是盲目追随&#xff0c;将他神化为无所不…