/******************************************************************************
* Name: Andy Guna
* NetID: guna@princeton.edu
* Precept: P01
*
* Description: This example creates a table of values of N(data size) versus
* T(runtime) when using WeightedQuickUnionUF to connect 0 and N-1. These values
* can be used to estimate the runtime of the algorithm
*******************************************************************************/
import edu.princeton.cs.algs4.WeightedQuickUnionUF;
import edu.princeton.cs.algs4.Stopwatch;
import edu.princeton.cs.algs4.StdRandom;
public class UFExample2 {
public static void main(String[] args) {
for (int k=1000; k <= 8000; k*=2) {
Stopwatch Clock = new Stopwatch();
int N = k*k;
int nexttolast = N-1;
WeightedQuickUnionUF UF1 = new WeightedQuickUnionUF(N);
while (true) {
int i = StdRandom.uniform(N);
int j = StdRandom.uniform(N);
if (!UF1.connected(i,j)){
UF1.union(i,j);
//System.out.println("connecting " + i + " and " + j);
}
if (UF1.connected(0,N-1)) {
//System.out.println("\n EXITING ... now 0 and " + nexttolast + " are connected ");
break;
}
}
System.out.println( N + " " + Clock.elapsedTime());
}
}
}