并查集(未压缩未按秩合并)
并查集(Union-Find)是一种用于处理不相交集合(disjoint-set)的数据结构,主要用于处理连通性问题。并查集支持两种操作:
- 查找(Find):确定元素所属的集合。
- 合并(Union):将两个集合合并为一个集合。
并查集通常应用于图的连通性问题,例如判断图中两点是否连通、计算连通分量等。
动画描述
将(1,2),(2,3),(2,4)union后的图例,可以观察到不带压缩的情况下树的高度在持续增长。
问题描述
下面是一个不带路径压缩的并查集(Union-Find)。这个版本仅使用基本的查找和合并操作:
代码实现
public class SimpleUnionFind {private int[] parent;// 初始化并查集public SimpleUnionFind(int size) {parent = new int[size];for (int i = 0; i < size; i++) {parent[i] = i;}}// 查找操作,不带路径压缩public int find(int p) {while (p != parent[p]) {p = parent[p];}return p;}// 合并操作,不带按秩合并public void union(int p, int q) {int rootP = find(p);int rootQ = find(q);if (rootP != rootQ) {parent[rootP] = rootQ;}}// 判断两个节点是否连通public boolean connected(int p, int q) {return find(p) == find(q);}public static void main(String[] args) {int size = 10; // 假设有10个元素SimpleUnionFind uf = new SimpleUnionFind(size);uf.union(1, 2);uf.union(2, 3);uf.union(4, 5);uf.union(6, 7);uf.union(5, 6);System.out.println("1 和 3 是否连通: " + uf.connected(1, 3)); // trueSystem.out.println("1 和 4 是否连通: " + uf.connected(1, 4)); // falseSystem.out.println("4 和 7 是否连通: " + uf.connected(4, 7)); // trueuf.union(1, 4);System.out.println("1 和 4 是否连通: " + uf.connected(1, 4)); // true}
}
解释
-
初始化:
parent
数组用于存储每个元素的父节点,初始时每个元素的父节点是它自己。
-
查找操作(find):
- 查找元素所属的集合,通过不断访问父节点来找到根节点。因为没有路径压缩,树的高度可能会很高,查找的时间复杂度是O(n)(n是元素个数)。
-
合并操作(union):
- 合并两个集合,将一个集合的根节点指向另一个集合的根节点。因为没有按秩合并,树的高度可能会很高,合并的时间复杂度也是O(n)。
-
连通性检查(connected):
- 判断两个元素是否属于同一个集合,即查找它们的根节点是否相同。
这个实现是并查集的基础版本,没有进行路径压缩和按秩合并的优化,因此在处理较大的数据集时效率较低。路径压缩和按秩合并的优化可以显著提高并查集的性能。
相关文章:

并查集(未压缩未按秩合并)
并查集(Union-Find)是一种用于处理不相交集合(disjoint-set)的数据结构,主要用于处理连通性问题。并查集支持两种操作: 查找(Find):确定元素所属的集合。合并࿰…...

读书其实并没有那么大的作用
开场白 Hey,书虫们和生活探索者们!今天我们来聊聊一个老生常谈却又常谈常新的话题——读书。有人说,读书能改变命运,但也有人说,读书不过是生活的调味品。那么,读书到底有啥用?让我们一起来扒一…...
微信小程序/vue将金额/数字转为千分位显示在页面上
vue将金额转为数字显示在页面上 toThousands (number) {let isNegative_ false // 判断正负if (Number(number) < 0) {isNegative_ truenumber String(number).split(-)[1] // 分离负号 并把String类型的数字并赋值给number}if (Number(number) ! 0 && Math.abs…...

如何查看树莓派的 OS 和内核版本
在使用树莓派开发的时候,有时候需要知道树莓派的一些基本信息,如:OS 版本,内核版本,CPU 构架等,在使用 40 pin 扩展接口的时候,需要知道每个管脚的具体定义。 1. 查看 OS 版本: 使…...

php的mysql操作可实现简单登录功能
文章目录 1. 表单和请求(1) 表单操作(2) 网络请求(3) $_REQUEST超全局变量 2. mysql数据库操作1) mysqli连接操作2) 操作数据库3) 预处理语句4) pdo操作数据库5) 创建连接并执行查询语句 1. 表单和请求 主要使用到**$_GET** 和 $_POST这两个超全局变量,分别对应两种请求 (1) …...
c#复制窗体Form方法
直接复制三个类粘贴到vs的项目中...

C:图案打印
引言 本篇文章讲了一些常见的图形编程题,并总结了一些规律。 1、打印空心正方形 1.1 代码展示: #include<stdio.h> int main() {int a 0;//边长初始化scanf("%d", &a);//输入边长的值{int i 0;for (i 0; i < a; i)//控制行…...

WebLogic:弱口令,木马反弹连接
weblogic WebLogic 是 Oracle 公司开发的应用服务器,主要用作开发、集成、部署和管理大型分布式 Web 应用、网络应用和数据库应用的 Java 应用服务器。它在历史上曾出现过多个安全漏洞,其中包括弱口令、任意文件上传、SSRF、反序列化漏洞等 常见版本&a…...

深度学习图像处理环境搭建
Anaconda安装 Anaconda介绍 Anaconda是一个用于科学计算和数据科学的开源发行版,它包含了许多流行的Python库和工具,旨在简化数据分析和机器学习任务的开发过程。Anaconda提供了一个集成的开发环境,包括Python解释器、包管理工具࿰…...

这几个高级爬虫软件和插件真的强!
亮数据(Bright Data) 亮数据是一款强大的数据采集工具,以其全球代理IP网络和强大数据采集技术而闻名。它能够轻松采集各种网页数据,包括产品信息、价格、评论和社交媒体数据等。 网站:https://get.brightdata.com/we…...

【实战】机器学习Kaggle比赛—House Prices - Advanced Regression Techniques
House Prices - Advanced Regression Techniques 一、准备工作(1)查看项目概述(2)下载数据集(3)导入部分必要的库(4)参数设置(图形显示大小屏蔽警告)…...
【前端面试题】前端工程化、Webpack、Vite、Git项目管理相关问题
目录 关于前端工程化关于Webpack关于Vite关于Git项目管理综合性问题 关于前端工程化 1. 前端工程化的定义和好处 问题:什么是前端工程化?它的主要好处是什么?答案:前端工程化是指在前端开发中应用系统化、自动化和标准化的方法&…...

【号外】「省点时间」新功能暖心上线!
好消息,好消息,重大好消息! 应广大用户朋友的要求,经过一个多月的鏖战,「省点时间」的VIP功能终于上线啦! 新版本在原有基础上,新增VIP功能,用户拥有了更多选择,赶快来…...
Python面试题:如何使用WebSocket实现实时Web应用
使用 WebSocket 实现实时 Web 应用可以使你的应用程序具备实时双向通信的能力。以下是一个完整的指南,展示如何使用 Django Channels 和 WebSocket 实现一个简单的实时 Web 应用。 环境准备 安装 Django Channels: pip install channels创建 Django 项目: django-a…...

公交信息在线查询小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,线路信息管理,站点分类管理,站点信息管理,周边分类管理周边信息管理,系统管理 微信端账号功能包括:系统首页࿰…...

Airtest实施手机精准截图
Airtest实施手机精准截图 一、接口查找 首先我们需要知道我们应该怎么实现用脚本去进行局部截图,我们可以通过翻阅Airtest的API文档发现,Airtest提供了 crop_image(img, rect) 方法可以帮助我们实现局部截图,在我们往期的推文里也介绍过该接…...

前端面试宝典【设计模式】【2】
欢迎来到《前端面试宝典》,这里是你通往互联网大厂的专属通道,专为渴望在前端领域大放异彩的你量身定制。通过本专栏的学习,无论是一线大厂还是初创企业的面试,都能自信满满地展现你的实力。 核心特色: 独家实战案例:每一期专栏都将深入剖析真实的前端面试案例,从基础知…...
技术汇总笔记7:条件分支相关内容
嵌套Switch语句的使用和改进 嵌套的switch语句虽然在语法上是允许的,但可能会使代码难以阅读和维护。例如: switch (_get_urgency_ob_type(sData.structure_name)) {case URGENCY_OB_PRESSUREINFO:{switch(_get_urgency_ob_sub_type( sData.attribute_…...

一文让你学会python:面向对象
面向对象编程(OOP) 一.类与实例 1.类: 是对现实世界描述的一种类型,是抽象的,是实例的模板,类名采用大驼峰,定义方式为 class 类名: pass 。 2.实例: 根据类创建的具体对象&…...
mac电脑安装 docker镜像 btpanel/baota
PS:docker链接:https://hub.docker.com/r/btpanel/baota 1、将docker下载到本地,然后运行端口映射 docker run -d --restart unless-stopped --name baota -p 8888:8888 -p 22:22 -p 443:443 -p 80:80 -p 888:888 -v ~/website_data:/www/w…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...

R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...