UNB/ CS/ David Bremner/ teaching/ cs1083/ java/ SearchBench.java
import java.util.Random;
public class SearchBench {
    int min, max, step, searches;
    Random random;

    public double timeSearches(SearchList<Integer> numbers){
        int reps;

        if (searches<=0)
            reps = numbers.size();
        else
            reps = searches;

        long startTime = System.nanoTime();
        for (int j=0; j<reps; j++){
            int target = random.nextInt(numbers.size());
            int pos = numbers.positionOf(target);
        }
        long endTime = System.nanoTime();
        return (double)(endTime-startTime)/reps;
    }

    public void fill(SearchList<Integer> numbers, int size){
        for (int i=0; i<size; i++){
            numbers.add(random.nextInt(size));
        }
    }

    public SearchBench(String [] args) {
        min = Integer.parseInt(args[0]);
        max = Integer.parseInt(args[1]);
        step = Integer.parseInt(args[2]);
        if (args.length <= 3)
            searches = -1;
        else
            searches = Integer.parseInt(args[3]);

        random = new Random();
    }

    public void doRuns() {
        for (int size=min; size<=max; size+=step){
            System.out.print(size+"\t");
            SearchList<Integer> numbers = new SearchList<Integer>();
            fill(numbers, size);
            System.out.print(timeSearches(numbers));

            BinarySearchList<Integer> bnumbers = new BinarySearchList<Integer>();
            fill(bnumbers, size);
            System.out.println("\t"+timeSearches(bnumbers));
        }
    }

    static public void main(String [] args) {

        SearchBench bench = new SearchBench(args);

        bench.doRuns();

    }
}