package username.median; import java.util.Vector; import java.io.PrintWriter; import java.util.Random; public class TestMedian { public static void main(String[] args) { PrintWriter pen = new PrintWriter(System.out, true); boolean ok = true; Random r = new Random(); IntegerComparator c = new IntegerComparator(); for (int size = 1; size < 65; size++) { // Build a 'random' vector with no duplicates Vector vec = new Vector(); int val = r.nextInt(100); for (int i = 0; i < size; i++) { val = val + 1 + r.nextInt(10); vec.add(new Integer(val)); } // for i IVUtils.permute(vec); // Find the median. Integer median = Median.median(vec, c); // Determine whether or not it's really the median by counting // smaller and larger elements. int smaller = 0; int larger = 0; for (int i = 0; i < size; i++) { int tmp = c.compare(vec.get(i), median); if (tmp < 0) { ++smaller; } if (tmp > 0) { ++larger; } } // for if ((larger == smaller) || (larger == smaller-1)) { // OK } else { ok = false; pen.println("In " + vec); pen.println(" median returned " + median); pen.println(" there are " + smaller + " smaller values."); pen.println(" there are " + larger + " larger values."); } } // for size // If no errors were detected, report success. if (ok) { pen.println("No errors detected."); } } // main(String[]) } // class TestMedian