private void drawGraph(QuickUnionUF qu) { int[] depth = new int[qu.getId().length]; for (int i = 0; i < qu.getId().length; i++) { depth[i] = qu.getDepth(i); } for (int i = 0; i < depth.length; i++) { System.out.print(depth[i]); if (i != depth.length - 1) System.out.print(", "); else System.out.println(); } }
/** * Reads in a sequence of pairs of integers (between 0 and N-1) from standard input, where each * integer represents some object; if the objects are in different components, merge the two * components and print the pair to standard output. */ public static void main(String[] args) { int N = StdIn.readInt(); QuickUnionUF uf = new QuickUnionUF(N); while (!StdIn.isEmpty()) { int p = StdIn.readInt(); int q = StdIn.readInt(); if (uf.connected(p, q)) continue; uf.union(p, q); StdOut.println(p + " " + q); } StdOut.println(uf.count() + " components"); }
public static double TrialQuickUnionUF(int N) { Stopwatch watch = new Stopwatch(); QuickUnionUF uf = new QuickUnionUF(N); for (int i = 0; i < N; i++) { int p = StdRandom.uniform(N); int q = StdRandom.uniform(N); if (!uf.connected(p, q)) { uf.union(p, q); } } double time = watch.elapsedTime(); // printTree(uf); return time; }
public Question3() { QuickUnionUF qu1 = new QuickUnionUF(10); QuickUnionUF qu2 = new QuickUnionUF(10); QuickUnionUF qu3 = new QuickUnionUF(10); QuickUnionUF qu4 = new QuickUnionUF(10); QuickUnionUF qu5 = new QuickUnionUF(10); qu1.setId(id[0]); qu2.setId(id[1]); qu3.setId(id[2]); qu4.setId(id[3]); qu5.setId(id[4]); drawGraph(qu1); // drawGraph(qu2); drawGraph(qu3); drawGraph(qu4); drawGraph(qu5); }