1. 概念
- 触点:区域内的点
- 连接:点与点之间的连接。
- 分量:区域内部分相互连通的所有点构成一个分量,整个区域可以划分为多个分量(包含互相联通的点)
概念 | 举例 |
---|---|
触点 | 0、1、2…… |
连接 | 0-1,1-2,3-4…… |
分量 | {0、1、2、5、6、7},{3、4、8、9} |
2. API
public class UF |
---|
|
UF |
构造方法 |
---|---|---|
int |
find(p) |
找到当前触点p所属分量 |
void |
union(p,q) |
将p,q合并到同一分量 |
boolean |
connected(p,q) |
验证p,q是否属于同一分量 |
int |
count() |
计算当前分量个数 |
find
和union
方法是决定算法运算量的重点
3. 模型实现
代码
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;
public class UF {
private int[] id;
private int count;
public UF(int N){
for(int i=0;i<N;i++){
id[i]=i;
}
}