// QuickSortTest: test the QuickSort class
public class QuickSortTest {
   private int size;
   private double[] a; // holds numbers to sort
   private QuickSort q;
   private RandomArray r;

   public QuickSortTest(int s) {
      size = s;
      q = new QuickSort();
      r = new RandomArray(size);
   }

   public void test() {
      System.out.println("Number of items: " + size);
      long startTime = System.currentTimeMillis();
      a = r.getArray();
      elapsedTime(startTime, "After generating, ");
      q.quicksort(a);
      elapsedTime(startTime, "After sorting (quicksort), ");
      System.out.println("Sorted is " + checkSorted(a));
      r.printStart();
   }

   public boolean checkSorted(double a[]) { // check if sorted
      for (int i = 0; i < a.length - 1; i++)
         if (a[i] > a[i+1]) return false;
      return true;
   }

   private void elapsedTime(long startTime, String s) {
      long stopTime = System.currentTimeMillis();
      double elapsedTime = ((double)(stopTime - startTime))/1000.0;
      System.out.println(s + "elapsed time: " + elapsedTime + " seconds");
   }
   
   public static void main(String[] argv) {
      int size = Integer.parseInt(argv[0]);
      QuickSortTest qTest = new QuickSortTest(size);
      qTest.test();
   }
}

