public class PolySort {

    public static final int MAXSIZE = 5;

    /**
     * Performs a selection sort on arr.
     */
    public void sort (Comparable arr[]) {
	for (int i = 0; i < arr.length - 1; i++) {
	    int minIndex = i;
	    for (int j = i + 1; j < arr.length; j++)
		if (arr[j].compareTo(arr[minIndex]) < 0)
		    minIndex = j;
	    if (minIndex != i) {
		Comparable temp;
		temp = arr[i];
		arr[i] = arr[minIndex];
		arr[minIndex] = temp;
	    }
	}
    }

    public void print(Comparable arr[]) {
	for (int k = 0; k < arr.length; k++) {
	    System.out.print(arr[k] + " ");
	}
	System.out.println();
    }

    public static void main(String args[]) {

	Integer iArr[] = new Integer[MAXSIZE];
	Double dArr[] = new Double[MAXSIZE];
	String sArr[] = new String[MAXSIZE];
	Animal dogs[] = new Dog[MAXSIZE];
	for (int k = 0; k < MAXSIZE; k++) {
	    iArr[k] = new Integer((int)(Math.random() * 1000));  // Random ints
	    dArr[k] = new Double((Math.random() * 1000));        // Random doubles
	    sArr[k] = new String(""+ (char)('a' + (int)(Math.random()* 26))); // Random strings
	    dogs[k] = new Dog(""+ (char)('a' + (int)(Math.random()* 26)), 'F', 2, 50, 4);
	}
	PolySort sorter = new PolySort();
	sorter.print(iArr);
	sorter.sort(iArr);
	sorter.print(iArr);
	sorter.print(dArr);
	sorter.sort(dArr);
	sorter.print(dArr);
	sorter.print(sArr);
	sorter.sort(sArr);
	sorter.print(sArr);
	sorter.print(dogs);
	sorter.sort(dogs);
	sorter.print(dogs);
    }
    
}