并查集解析及Java代码实现(附图)

vivado 编译ADI AD9361 TCL脚本生成hdl工程 (4)输入"source ../../scripts/adi_make.tcl"命令(仅双引号内部命令,不包含双引号),个人理解:该命令用来加载当前所需要编译工程所需要各功能模块的信息,因为每个工程需要不同的功能模块,比如有的需要gpio模块,有的不需要gpio模块,这些模块上前面路径的library也同样以TCL脚本形式存在,当有需要时才进行编译,怎么知道当前工程需要什么模块呢就是通过"source ../../scripts/adi_make.tcl"(仅双引号内部命令,不包含双引号)命令实现。 阅读详情

并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。它的功能主要有:

1、找到某个节点的头节点
2、查询两个节点是否在同一个集合里
3、合并两个集合

具体算法为:

在给定的一个集合中,所有的节点都指向第一个节点,而第一个节点指向自身,查询是否位于同一集合,我们直接查询节点的父节点是否为同一个节点(该节点指向自身),合并两个集合时,我们将集合的父节点合并。这样就能轻松实现查询与合并。

并查集的数学模型是一组不相交的动态集合的集合S={A,B,C,...},它支持以下的运算:

(1)union(A,B):将集合A和B合并,其结果取名为A或B;

(2)find(x):找出包含元素x的集合,并返回该集合的名字。

/**
 * 并查集
 * @author Administrator
 *
 */
public class UnionFindSet {
	int num = 6;  //顶点数
	int[] parent = new int[num];
	
	/**
	 * 初始化parent数组
	 * @param parent
	 */
	public void initialize(int parent[]) {
		for (int i = 0; i < num; i++)
			parent[i] = -1;
	}
	
	/**
	 * 合并两个节点,返回0表示合并失败,返回1表示合并成功
	 * @param x
	 * @param y
	 * @param parent
	 * @return
	 */
	public int union(int x, int y, int parent[]) {
		int x_root = find(x, parent);
		int y_root = find(y, parent);
		if(x_root == y_root) {   //如果根节点是同一个,则无需合并
			return 0;
		}else {
			parent[x_root] = y_root;  //合并:把x的父节点设为y
			return 1;
		}
	}
	
	/**
	 * 找到x的根节点
	 * @param x
	 * @param parent
	 * @return
	 */
	public int find(int x, int parent[]){
		int x_root = x;  //假设x的根节点是它本身
		while(parent[x_root] != -1) {  //如果x_root有父节点,则一层层往上找,直到找到顶层的父节点
			x_root = parent[x_root];
		}
		return x_root;
	}
}

图示:

VH6501干扰仪的使用 触发模式方法备注External Trigger(外部触发)使用VH6501的I/O口作为触发源Frame Trigger(报文触发)设定被干扰报文的触发位置,并发送干扰位序列/报文software Trigger(软件触发)配置好干扰序列后直接发送Error Frame Trigger(错误帧触发)基于错误帧标识位为触发条件触发干扰Direction Trigger(发送方向触发)根据TX/RX发送/接收方作为触发条件Inverted Trigger(反向触发) 阅读详情

相关推荐

拖动无标题栏的cef3窗口

拖动嵌入了cef3的无标题栏win32窗口,本质上就是拖动子窗口移动父窗口这么个事情,这个在自己创建窗口的程序上处理非常简单,cef封装较多,想修改的完善点步骤较多。         cef所用版本3.2623。         就用cefclient来做测试工程,首先建议在cefclient_win.cc的RunMain函数中的app = new ClientAppRenderer();前面

loveyong1990的专栏 6161

并查集(java)

并查集是一种用于管理元素所属集合的数据结构,实现为一个森林,其中每棵树表示一个集合,树中的节点表示对应集合中的元素。

立志成为AIer 1971

GAN网络详解析

介绍目前常见的GAN网络,以及GAN网络的基本组成

wm199的博客 6504

java字符串 集合_如何在Java中合并两个字符串集合,但前提是它们具有相同的元素?...

我是新来的Java和我试图(和 - apparently-失败),如果他们有共同的要素两个字符串组结合:如何在Java中合并两个字符串集合,但前提是它们具有相同的元素?CommonElements = Set1;CommonElements.retainAll(Set2);System.out.println("common elements of"+Set1+"and"+Set2+":"+Com...

weixin_36356040的博客 754

ROS应用之如何配置RTOS满足机器人系统中的实时要求

实时操作系统(RTOS)基本概念实时操作系统(RTOS)是设计用于实时应用的操作系统,其主要目标是在确定的时间内完成任务。RTOS的任务调度算法和优先级控制机制能够确保高优先级任务按时完成。精确的传感器数据采集:传感器数据需要在规定时间内采集并传输给控制系统。快速响应外部事件:对于控制系统,需要确保指令在最短的时间内得到响应。任务的调度周期:任务的周期可以通过公式计算,其中 ftask 是任务的调度频率。优先级分配。

weixin_68094467的博客 1008

T100服务端接口实战:从注册到日志排查的全链路开发指南

本文提供了一份T100服务端接口开发的全链路实战指南。从程序注册与框架签出开始,详细讲解了接口的数据结构设计、核心业务逻辑编写,到最终的部署上线与调用验证。文章重点分享了如何利用日志文件高效定位和排查接口问题,帮助开发者快速掌握T100接口开发的关键步骤与实用技巧。

weixin_28831399的博客 300

java+实现集合并运算_Java实现快速并查集

在一些应用的问题中,需将n个不同的元素划分成一组不相交的集合。开始时,每个元素自成一格单元素集合,然后按一定顺序将属于同一组的元素的集合合并。其间要反复用到查询某个元素属于哪个集合的运算。适合于描述这类问题的抽象数据类型称为并查集。1. 并查集的概述并查集的数学模型是一组不相交的动态集合的集合S={A,B,C,...},它支持以下的运算:(1)union(A,B):将集合A和B合并,其结果取名为A...

weixin_32943807的博客 248

PyTorch深度学习实战(36)——Pix2Pix详解与实现

Pix2Pix 是基于生成对抗网络的图像转换框架,能够将输入图像转换为与之对应的输出图像,能够广泛用于图像到图像转换的任务,如风格转换、图像修复、语义标签到图像的转换等。Pix2Pix 的核心思想是通过对抗训练将输入图像和目标输出图像进行配对,使生成网络可以学习到输入图像到输出图像的映射关系。在本节中,将学习使用 Pix2Pix 根据给定轮廓生成图像。

盼小辉丶的博客 1万+

java 集合拼接_java中拼接两个对象集合

目标: 根据两个list中每条记录的某个属性是否相同来拼接。1.首先定义一个字符串String str = "[{\"ITEMID\":2,\"ITEMNAME\":\"人大常委办公厅\",\"BILLTYPEID\":1,\"BILLTYPENAME\":\"一般缴款书\"},\n" +" {\"ITEMID\":2,\"ITEMNAME\":\"人大常委办公厅\",\"BILLTYPEID\...

weixin_34754795的博客 2718

华为OD新系统机试真题 - API请求日志去重分析

华为OD新系统机试真题【API请求日志去重分析】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD4月15号机试真题【API请求日志去重分析】

qq_45776114的博客 916

LoRA 完整解析:从理论到实践

LoRA(低秩适应)是一种高效的大模型微调方法,通过添加少量可训练参数(低秩矩阵)来适配新任务,避免全参数微调的高成本。其核心是将权重更新ΔW分解为两个小矩阵B×A的乘积,大幅减少训练参数量(仅0.1-1%)。LoRA基于内在维度假设,通过低秩约束捕捉核心任务信息,兼具效率与效果。实际应用中,常用配置为秩r=16-32,目标模块选择注意力层的q_proj和v_proj,学习率比全参数微调大10倍(约1e-4)。优势包括参数高效(内存降低60-80%)、多任务适配灵活、保留预训练知识等,已成为大模型微调的主流

echo的博客 1412

Java基础题:按条件合并对象数组

要求如下: class ProA { String key1; String key2; String v1; } class ProB { String key1; String key2; String v2; } class MergedAB { String key1; String key2; String v1; String v2; } 让ProA[]数组和ProB[]数组能够合并成一个MergedAB[]数

qq_42538317的博客 712

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Dijkstra算法解析及Java代码实现(附图)

所谓单源,即求从一个点出发,到其他各点的最短路径,也就是说 :如果这个图有n个点,我们要求n-1个路径。 算法概述 Dijkstra算法使用了广度优先搜索(BFS)解决赋权有向图或者无向图的单源最短路径问题,算法最终得到一个最短路径树。该算法常用于路由算法或者作为其他图算法的一个子模块。 该算法的时间复杂度是n的平方,可以使用堆优化。 但是,要注意一点,Dijkstra算法只能适...

SpringRolls的博客 806

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Kruskal算法解析及Java代码实现(附图)

最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树。 example: 例如,对于如上图G4所示的连通网可以有多棵权值总和不相同的生成树。 克鲁斯卡尔(Kruskal)算法 克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成树的算法,基于连续的按照最小边...

SpringRolls的博客 1041

Tarjan算法解析及Java代码实现(附图)

以下概念为有向图中的定义: 强连通: 在一个有向图G里,如果有两个点(a、b)可以相互到达,我们就叫这两个顶点(a,b)为强连通。 强连通图: 如果在一个有向图G中,每两个点都强连通(可以相互到达),我们就叫这个图为强连通图。 强连通分量(SCC):在一个有向图G中,有一个子图,这个子图每2个点都满足强连通,我们就叫这个子图叫做 强连通分量,孤立的点也是一个强连通分量。 例:下图中,子...

SpringRolls的博客 1789

Prim算法解析及Java代码实现(附图)

Prim算法 普里姆(Prim)算法,是用来求加权连通图的最小生成树的算法。 基本思想 : 对于图G而言,V是所有顶点的集合;现在,设置两个新的集合U和T,其中U用于存放G的最小生成树中的顶点,T存放G的最小生成树中的边。 从所有uЄU,vЄ(V-U) (V-U表示出去U的所有顶点)的边中选取权值最小的边(u, v),将顶点v加入集合U中,将边(u, v)加入集合T中,如此不...

SpringRolls的博客 1283

【深度解析】Apache Kafka:驾驭海量数据流的引擎(附图解与代码)

Apache Kafka深度解析与实战指南 摘要:本文深入剖析Apache Kafka分布式流平台的核心架构与工作原理。通过图解展示了Topic分区、副本机制、生产者路由策略和消费者组负载均衡等关键设计,揭示了Kafka实现高吞吐、高可用的技术原理。文章包含Java客户端实战代码,演示消息生产消费流程,并对比新旧版本架构差异(如ZooKeeper与KRaft模式)。内容涵盖Kafka解决的系统耦合、性能瓶颈等核心问题,适合开发者构建实时数据管道和事件驱动架构时参考。(150字) 关键词:Kafka架构、消息

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 5967

Kosaraju算法解析及Java代码实现(附图)

强连通分量 强连通分量只可能存在于有向图中,无向图中是不存在强连通分量的。下图很形象地指出了图中所包含的强连通分量。 上图中存在5个强连通分量(阴影部分)。 拓扑排序 定义:给定一副有向图,将所有的顶点排序,使得所有的有向边均从排在前面的元素指向排在后面的元素。 如下图所示,左边是一个有向无环图,箭头方向代表了其执行方向,也就是边的方向。右边是通过计算得到的拓扑排序,其实从图中...

SpringRolls的博客 1025

04 Pop Sequence (java实现,附图文解析)

Given a stack which can keep M numbers at most. Push N numbers in the order of 1, 2, 3, …, N and pop randomly. You are supposed to tell if a given sequence of numbers is a possible pop sequence of the stack. For example, if M is 5 and N is 7, we can obtain

沟沟沟的博客 320

java实现快速排序---附图

快排的思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 图解:一趟排序的过程 代码实现: public class QuickSort{ private static void quickSort(int[] num,...

weixin_43573534的博客 187

当初我要是这么学习JVM就好了「附图文解析」

JVM的类加载,运行时数据区,垃圾回收简介

开心的博客 2971

modbus java解析_基于Java语言的modbus协议解析方法与流程

本发明涉及modbus领域,具体涉及基于Java语言的modbus协议解析方法。背景技术:modbus协议是一种通用的工业标准,其广泛用于控制器之间的通信互联。当在一modbus网络上通信时,每个控制器需要知道该网络中与其通信的所有控制器的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用modbus协议发出。如今Java版的modbus数据解析,大多代码繁...

weixin_39960147的博客 1784

当初我要是这么学习Java多线程就好了「附图文解析」

Java多线程从基础到进阶的知识概念图文解析

开心的博客 1226

java关于BMP位图文件解析的分析与实现[源码][附图]

一、需求分析: BMP是一种与硬件设备无关的图像文件格式,使用非常广。BMP是Windows环境中交换与图有关的数据的一种标准,在Windows环境中运行的图形图像软件都支持BMP图像格式。 学习解析WINDOWS文档是一个合格程序员必须具备的能力,对于初学者来说,解析BMP文件是一个不错的选择。 二、概要设计: 针对需求分析,查阅BMP文档的编码规则可知: 位图文件可看成由4个部分组成...

萧晓 444

JMM(Java内存模型)——附图文说明

一、什么是JMM Java 内存模型(Java Memory Model 简称JMM)是一种抽象的概念,并不真实存在,指一组规则或规范,通过这组规范定义了程序中各个变量的访问方式。 因为在不同的硬件生产商和不同的操作系统下,内存的访问有一定的差异,所以会造成相同的代码运行在不同的系统上会出现各种问题。java内存模型(JMM)屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台下都能达到一致的并发效果。 结构: JVM运行程序的实体是线程,而每个线程创建时 JVM 都会

祝我飞黄腾达 4079

阿里巴巴面试:Java 集合知识点(附图文解析)

作为Java求职者,无数次被问到过集合的知识,同时作为一位"周角公司小菜面试官”,我也肯定会问面试者集合的知识,所以就有了这篇,源码较多,建议静下心来哈,一起学习,一起进步 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,需要将对象进行存储,集合就是存储对象最常用的一种方式,也叫容器。 从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器 一种是集合(Collection),存储一个元素集合 另一种是图(Map),存储键/值对映射。 Collec..

m0_50180963的博客 362

Android APK反编译详解(附图)

在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。 在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。一、反编译Apk得到Java源代码 首先要下载两个工具:dex2jar和JD-GUI 前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。 具体步骤: 首先将apk文件,将后缀改为zi

wubaohu1314的博客 2万+
上一篇: 利用 Python3 实现图像灰度变换及数组操作
下一篇: Dijkstra算法解析及Java代码实现(附图)
SpringRolls
博客等级 码龄9年 73粉丝 129原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值