算法简介:并查集

算法简介

算法简介

并查集

1. 定义:

并查集实际上就是并集和查集的过程.集(集合)可以理解为一棵树,即一个根结点连着无数个子节点.并查集也称为不相交集数据结构.形象地来说,有点像"朋友圈":A和B是朋友,A和B就构成了一个朋友圈,C和D是朋友,C和D也构成了一个朋友圈,那么这时,如果B和C在成为了朋友,A、B、C、D就构成了一个大的朋友圈.

2. 算法思想:

并查集通过一个一维数组来实现,其本质是维护一个森林.刚开始的时候,森林的每个点都是孤立的,也可以理解为每个点就是一棵只有一个结点的树,之后通过一些条件,逐渐将这些树合并成一棵大树.其实合并的过程就是"认爹"的过程.在"认爹"的过程中,要遵守"靠左"原则和"擒贼先擒王"原则.在每次判断两个结点是否已经在同一棵树中的时候(一棵树其实就是一个集合).也要注意必须求其根源,中间父亲结点(“小BOSS”)是不能说明问题的,必须找到其祖宗(树的根结点),判断两个结点的祖宗是否是同一个根结点才行.

3. 遵循原则

  • "靠左"原则
  • “擒贼先擒王”

4. 编码模式:

  • 并:Merge-----合并子集
  • 查:Find -----查找父节点

5. 解决问题

  • 判断图中2个点是否已经连通问题(如:图的最小生成树—Kruskal算法中用到)
  • "朋友圈"问题-------找出一堆数据中有联系的各个组等

6. 代码示例

并查集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值