您的位置:首页 > 其它

并查集 学习笔记

2016-09-12 23:58 295 查看
并查集是由一组互不相交的集合组成的一个集合结构,并在此集合上定义了运算Union和Find。即并查集中的元素本身是集合,他们是某个集合的子集,并查集是由这些集合组成的集合结构。

并查集上有两个最基本的运算,Find和Union。函数Find搜索给定元素i所在的子集合,并返回该自己喝;Union运算将两个子集合合并为一个集合。

<span style="font-size:18px;">package DataStructureAndAlgorithm.UFset;

public class UnionFindSet {
private int[] set;
private int[] size;
private int count;
public UnionFindSet(int n){
count=n;
set=new int
;
size=new int
;
for(int i=0;i<n;++i){
set[i]=i;
size[i]=1;
}
}
public void union(int p,int q){
int x=find(p);
int y=find(q);
if(x==y){
return;
}
if(size[x]<size[y]){
set[x]=y;
size[y]+=size[x];
}else{
set[y]=x;
size[x]+=size[y];
}
count--;
}
public int find(int p){
while(p!=set[p]){
p=set[p];
}
return p;
}
public boolean connected(int p,int q){
return find(p)==find(q);
}
public int count(){
return count;
}

}
</span>


参考:http://www.oschina.net/code/snippet_1159061_37084

并查集需要继续深入理解!了解其应用场景,算法实现!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: