In questa implementazione dell'algoritmo Ricerca rapida, Constructor accetta i passi N
così come union()
.In che modo l'unione trova l'algoritmo quadratico?
L'istruttore detto che union
è troppo costoso in quanto richiede N^2
per elaborare sequenza di N
union
comandi su N
oggetti, Come può union
quadratico quando si accede agli elementi dell'array uno alla volta?
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;
}
}
Sta dicendo che una sequenza di operazioni unione N richiede tempo quadratico, non una singola invocazione. –