Trong quá trình thực hiện thuật toán Tìm nhanh này, Constructor mất N
các bước như vậy union()
.Công đoàn tìm thuật toán bậc hai như thế nào?
Các giảng viên nói rằng union
là quá đắt vì nó mất N^2
để xử lý chuỗi các N
union
lệnh trên N
đối tượng, Làm thế nào có thể union
được bậc hai khi nó truy cập các phần tử mảng cùng một lúc?
public class QuickFind
{
private int[] id;
public QuickFind(int N) {
id = new int[N];
for (int i=0; i<N; i++) {
id[i] = i;
}
}
public boolean connected(int p, int q) {
return id[p] == id[q];
}
public void union(int p, int q) {
int pid = id[p];
int qid = id[q];
for (int i=0; i<id.length; i++)
if (id[i] == pid)
id[i] = qid;
}
}
Anh ấy đang nói một chuỗi các hoạt động nghiệp đoàn N mất thời gian bậc hai, không phải là một lời gọi đơn lẻ. –