1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| package com.holelin.unionfind;
import java.util.Random;
public class UnionFindTest { private static double testUF(UnionFind uf, int m) { int size = uf.getSize(); Random random = new Random(); long startTime = System.nanoTime();
for (int i = 0; i < m; i++) { int a = random.nextInt(size); int b = random.nextInt(size); uf.unionElements(a, b); } for (int i = 0; i < m; i++) { int a = random.nextInt(size); int b = random.nextInt(size); uf.isConnected(a, b); } long endTime = System.nanoTime(); return (endTime - startTime) / 100000000.0; }
public static void main(String[] args) { int size = 10000000; int m = 10000000;
QuickUnionBySize quickUnion = new QuickUnionBySize(size); System.out.println("QuickUnionBySize: "+testUF(quickUnion,m)+"s"); QuickUnionByRank quickUnionByRank= new QuickUnionByRank(size); System.out.println("QuickUnionByRank: "+testUF(quickUnionByRank,m)+"s"); QuickUnionByPathCompression quickUnionByPathCompression= new QuickUnionByPathCompression(size); System.out.println("QuickUnionByPathCompression: "+testUF(quickUnionByPathCompression,m)+"s");
QuickUnionByPathCompression2 quickUnionByPathCompression2= new QuickUnionByPathCompression2(size); System.out.println("QuickUnionByPathCompression2: "+testUF(quickUnionByPathCompression2,m)+"s"); } }
|