import java.lang.reflect.Array;
import java.io.*;
import java.math.*;
import java.util.*;

public class SortTime<T extends Comparable<T>> {

  static long time1, time2;
  static int numruns = 5;
  int swaps;
  int compares;
  boolean prod;

  private T[] A;
  private T[] mtemp;
  
  @SuppressWarnings("unchecked")
  public SortTime(Class<T> type, int size, boolean prodIn) {
    // This creates a truly reified array of the correct type at runtime
    A = (T[]) Array.newInstance(type, size);
    mtemp = (T[]) Array.newInstance(type, size);
    prod = prodIn;
  }
