//import java.util.*; public class StudentList implements StudentListInterface { public Student[] students; public int num_comparisons; public int elements = 0; public int arrayLength = 1; public StudentList(){ students = new Student[arrayLength]; } private boolean isFull() { return (students.length == elements); } private void ExpandList() { Student[] temp = new Student[elements*2]; for (int i =0; i < students.length; i++) { temp[i] = students[i]; } students = temp; arrayLength = arrayLength*2; } public void add(Student s) { if (isFull()){ ExpandList(); students[elements] = s; elements++; } else { students[elements] = s; elements++; } } public void add(Student s, int n) { if(isFull()){ ExpandList(); for (int i = elements; i>=n; i--){ students[i] = students[i-1]; //makes room for Student //to be added in array before specified position n. } //Moves all elements up to and including n-1 to right in array. } else { for (int i = elements; i>=n; i--) { students[i] = students[i-1]; } } students[n-1] = s; //adds before nth item elements++; } public void clear() { elements = 0; arrayLength = 0; //remove? } public void display() { for (int i=0; i < elements; i++){ students[i].display(); } } public Student get(int n) throws ArrayIndexOutOfBoundsException { if (n < elements && n >= 0 && students[n] != null){ return students[n]; } else { throw new ArrayIndexOutOfBoundsException("Object at position " + n + " does not exist."); } } public void closeGap(int n) { for(int i = n + 1; i < size(); i++){ students[i-1] = students[i]; } } public Student remove(int n) throws ArrayIndexOutOfBoundsException { if (n < elements && n >= 0 && students[n] != null) { Student temp = students[n]; closeGap(n); elements--; return temp; } else { throw new ArrayIndexOutOfBoundsException("Object at position " + n + " does not exist."); } } public int size() { return elements; } public void bubbleSort(boolean showGui) { Student[] tempstudents = new Student[arrayLength]; // num_comparisons = 0; for(int k=0; k < tempstudents.length; k++){ for(int j = 0; j < tempstudents.length; j++) if (tempstudents[k].compareTo(tempstudents[j]) != 0 && tempstudents[k].compareTo(tempstudents[j]) > 0){ num_comparisons++; swap(tempstudents, k, j); } } } public static void swap(Student[] tstudents, int i, int j) { Student temp = tstudents[i]; tstudents[i] = tstudents[j]; tstudents[j] = temp; } public void insertionSort(boolean showGui){ } public void mergeSort(boolean showGui){ } } //Output Running C level... Running constructor... Testing add()... Testing display()... ID: 1, Month: DEC, Date: 3 ID: 2, Month: AUG, Date: 2 ID: 4, Month: MAY, Date: 21 Testing add(s, n)... ID: 1, Month: DEC, Date: 3 ID: 3, Month: APR, Date: 9 ID: 2, Month: AUG, Date: 2 ID: 4, Month: MAY, Date: 21 Testing get()... The 1st student in the list is ID: 1, Month: DEC, Date: 3 Testing get() error handling... Testing remove()... ID: 3, Month: APR, Date: 9 ID: 2, Month: AUG, Date: 2 ID: 4, Month: MAY, Date: 21java.lang.ArrayIndexOutOfBoundsException: Object at position 1000 does not exist. at StudentList.get(StudentList.java:70) at A3Test.ctest(A3Test.java:55) at A3Test.main(A3Test.java:20) Testing remove() error handling... Testing length()... Length is: 3 read testData 1 java.lang.ArrayIndexOutOfBoundsException: Object at position -10 does not exist. at StudentList.remove(StudentList.java:87) at A3Test.ctest(A3Test.java:65) at A3Test.main(A3Test.java:20) ID: 1, Month: JAN, Date: 2 ID: 2, Month: JAN, Date: 5 ID: 3, Month: JAN, Date: 12 ID: 4, Month: JAN, Date: 13 ID: 5, Month: JAN, Date: 15 ID: 6, Month: JAN, Date: 16 ID: 7, Month: JAN, Date: 19 ID: 8, Month: JAN, Date: 20 ID: 9, Month: JAN, Date: 23 ID: 10, Month: JAN, Date: 26 ID: 11, Month: FEB, Date: 2 ID: 12, Month: FEB, Date: 4 ID: 13, Month: FEB, Date: 5 ID: 14, Month: FEB, Date: 6 ID: 15, Month: FEB, Date: 8 ID: 16, Month: FEB, Date: 11 ID: 17, Month: FEB, Date: 15 ID: 18, Month: FEB, Date: 19 ID: 20, Month: FEB, Date: 21 ID: 21, Month: FEB, Date: 28 ID: 22, Month: MAR, Date: 2 ID: 23, Month: MAR, Date: 3 ID: 24, Month: MAR, Date: 5 ID: 25, Month: MAR, Date: 7 ID: 26, Month: MAR, Date: 10 ID: 27, Month: MAR, Date: 11 ID: 28, Month: MAR, Date: 13 ID: 29, Month: MAR, Date: 21 ID: 30, Month: MAR, Date: 26 ID: 31, Month: APR, Date: 2 ID: 32, Month: APR, Date: 3 ID: 33, Month: APR, Date: 5 ID: 34, Month: APR, Date: 9 ID: 35, Month: APR, Date: 12 ID: 36, Month: APR, Date: 18 ID: 37, Month: APR, Date: 23 ID: 38, Month: APR, Date: 26 ID: 39, Month: APR, Date: 28 ID: 40, Month: MAY, Date: 1 ID: 41, Month: MAY, Date: 3 ID: 42, Month: MAY, Date: 6 ID: 43, Month: MAY, Date: 14 ID: 44, Month: MAY, Date: 18 ID: 45, Month: MAY, Date: 19 ID: 46, Month: MAY, Date: 20 ID: 47, Month: MAY, Date: 24 ID: 48, Month: MAY, Date: 25 ID: 49, Month: MAY, Date: 26 ID: 50, Month: MAY, Date: 28 Number of comparisons for bubble sort on testData1.txt: 0 read testData 2 ID: 50, Month: MAY, Date: 28 ID: 49, Month: MAY, Date: 26 ID: 48, Month: MAY, Date: 25 ID: 47, Month: MAY, Date: 24 ID: 46, Month: MAY, Date: 20 ID: 45, Month: MAY, Date: 19 ID: 44, Month: MAY, Date: 18 ID: 43, Month: MAY, Date: 14 ID: 42, Month: MAY, Date: 6 ID: 41, Month: MAY, Date: 3 ID: 40, Month: MAY, Date: 1 ID: 39, Month: APR, Date: 28 ID: 38, Month: APR, Date: 26 ID: 37, Month: APR, Date: 23 ID: 36, Month: APR, Date: 18 ID: 35, Month: APR, Date: 12 ID: 34, Month: APR, Date: 9 ID: 33, Month: APR, Date: 5 ID: 32, Month: APR, Date: 3 ID: 31, Month: APR, Date: 2 ID: 30, Month: MAR, Date: 26 ID: 29, Month: MAR, Date: 21 ID: 28, Month: MAR, Date: 13 ID: 27, Month: MAR, Date: 11 ID: 26, Month: MAR, Date: 10 ID: 25, Month: MAR, Date: 7 ID: 24, Month: MAR, Date: 5 ID: 23, Month: MAR, Date: 3 ID: 22, Month: MAR, Date: 2 ID: 21, Month: FEB, Date: 28 ID: 20, Month: FEB, Date: 21 ID: 18, Month: FEB, Date: 19 ID: 17, Month: FEB, Date: 15 ID: 16, Month: FEB, Date: 11 ID: 15, Month: FEB, Date: 8 ID: 14, Month: FEB, Date: 6 ID: 13, Month: FEB, Date: 5 ID: 12, Month: FEB, Date: 4 ID: 11, Month: FEB, Date: 2 ID: 10, Month: JAN, Date: 26 ID: 9, Month: JAN, Date: 23 ID: 8, Month: JAN, Date: 20 ID: 7, Month: JAN, Date: 19 ID: 6, Month: JAN, Date: 16 ID: 5, Month: JAN, Date: 15 ID: 4, Month: JAN, Date: 13 ID: 3, Month: JAN, Date: 12 ID: 2, Month: JAN, Date: 5 ID: 1, Month: JAN, Date: 2 Number of comparisons for bubble sort on testData2.txt: 0 read testData 3 ID: 41, Month: MAY, Date: 3 ID: 42, Month: MAY, Date: 6 ID: 43, Month: MAY, Date: 14 ID: 44, Month: MAY, Date: 18 ID: 45, Month: MAY, Date: 19 ID: 46, Month: MAY, Date: 20 ID: 47, Month: MAY, Date: 24 ID: 48, Month: MAY, Date: 25 ID: 49, Month: MAY, Date: 26 ID: 50, Month: MAY, Date: 28 ID: 34, Month: APR, Date: 9 ID: 35, Month: APR, Date: 12 ID: 36, Month: APR, Date: 18 ID: 37, Month: APR, Date: 23 ID: 38, Month: APR, Date: 26 ID: 39, Month: APR, Date: 28 ID: 40, Month: MAY, Date: 1 ID: 26, Month: MAR, Date: 10 ID: 27, Month: MAR, Date: 11 ID: 28, Month: MAR, Date: 13 ID: 29, Month: MAR, Date: 21 ID: 30, Month: MAR, Date: 26 ID: 31, Month: APR, Date: 2 ID: 32, Month: APR, Date: 3 ID: 33, Month: APR, Date: 5 ID: 18, Month: FEB, Date: 19 ID: 20, Month: FEB, Date: 21 ID: 21, Month: FEB, Date: 28 ID: 22, Month: MAR, Date: 2 ID: 23, Month: MAR, Date: 3 ID: 24, Month: MAR, Date: 5 ID: 25, Month: MAR, Date: 7 ID: 10, Month: JAN, Date: 26 ID: 11, Month: FEB, Date: 2 ID: 12, Month: FEB, Date: 4 ID: 13, Month: FEB, Date: 5 ID: 14, Month: FEB, Date: 6 ID: 15, Month: FEB, Date: 8 ID: 16, Month: FEB, Date: 11 ID: 17, Month: FEB, Date: 15 ID: 1, Month: JAN, Date: 2 ID: 2, Month: JAN, Date: 5 ID: 3, Month: JAN, Date: 12 ID: 4, Month: JAN, Date: 13 ID: 5, Month: JAN, Date: 15 ID: 6, Month: JAN, Date: 16 ID: 7, Month: JAN, Date: 19 ID: 8, Month: JAN, Date: 20 ID: 9, Month: JAN, Date: 23 Number of comparisons for bubble sort on testData3.txt: 0