bobo老师,
不知道为什么我的uf2 一直都比uf1慢的多的多,没发现什么问题啊。
public class UnionFind2 {
private int[] parent;
private int count;
public UnionFind2(int count){
parent = new int[count];
this.count = count;
for(int i = 0 ; i < count ; i ++)
parent[i] = i;
}
private int find( int p){
assert p >= 0 && p < count;
while( p != parent[p])
p = parent[p];
return p;
}
public boolean isConnection(int p , int q){
return find(p) == find(q) ;
}
public void unionElements( int p , int q){
// if( !isConnection( p , q)){
// parent[find(q)] = find§;
// }
int pRoot = find(p);
int qRoot = find(q);
if( pRoot == qRoot)
return;
parent[ pRoot ] = qRoot;
}
}