栈,队列,并查集等算法工具实现(3)

来源:互联网 发布:单位的网络不能看视频 编辑:程序博客网 时间:2024/05/13 12:54

接上,并查集是处理合并问题有力的工具,读者自己百度,参考 Kruskral算法寻找最小生成树中的应用

并差集的实现:

package lee.tools;public class UF {int[] id;int[] size;public int count;
//初始化  每个元素自己是一个集合public UF(int n){id = new int[n];size = new int[n];count=n;for(int i=0;i<n;i++){size[i] = 1;id[i] = i;}}//查找自己的集合号——集合树中根结点编号public int find(int p){while(p!=id[p]){id[p] = id[id[p]];p = id[p];}return p;}//合并操作。 将两棵数并为一棵树。  public void union(int p,int q){int pid = find(p);int qid = find(q);if(pid==qid){return;}if(size[pid]>size[qid]){id[qid] = pid;}else{id[pid] = qid;}count--;}//判断 元素 p 和元素q 是否是在同一个集合中(图论中表示是否连接)public boolean connected(int q , int p){if(find(q)==find(p)){return true;}else{return false;}}}


0 0
原创粉丝点击