Question
Getting errors on my PersonSort class- can someone fix please? import java.util.*; import java.io.*; public class PersonSort { private static int numCompares = 0; private
Getting errors on my PersonSort class- can someone fix please?
import java.util.*; import java.io.*;
public class PersonSort { private static int numCompares = 0; private static boolean printList = true;
public static void main (String[] args) throws Exception { // File name for testing the algorithms final String PERSON_FILE32 = ".\\src\\Person32.txt";
// ArrayList size array for printing String[] size = {"1K", "2K", "4K", "8K", "16K"};
// This set of files are for determining the running time of sorting randomized Persons String[] random = {".\\src\\Person1Ka.txt", ".\\src\\Person2Ka.txt", ".\\src\\Person4Ka.txt", ".\\src\\Person8Ka.txt", ".\\src\\Person16Ka.txt"};
// This set of files are for determining the running time of sorting sorted Persons String[] sorted = {".\\src\\Person1Kb.txt", ".\\src\\Person2Kb.txt", ".\\src\\Person4Kb.txt", ".\\src\\Person8Kb.txt", ".\\src\\Person16Kb.txt"};
// This set of files are for determining the running time of sorting sorted Persons String[] revsorted = {".\\src\\Person1Kc.txt", ".\\src\\Person2Kc.txt", ".\\src\\Person4Kc.txt", ".\\src\\Person8Kc.txt", ".\\src\\Person16Kc.txt"};
// Define an ArrayLst to hold the list of Persons ArrayList
// Start sorting the small random file with each sort and print the results String fileName = PERSON_FILE32;
System.out.println("Sorting the 32 item array using each of five algorithms"); System.out.println("======================================================"); System.out.println();
sort (personList, fileName); printList = false;
// Sort randomly generated array list of Persons for (int file = 0; file < 5; file++) { fileName = random[file];
System.out.println(); System.out.println ("ArrayLists with Persons Randomly Located"); System.out.println ("Sorting the " + size[file] + " item array using each of five algorithms"); System.out.println ("======================================================="); System.out.println();
// Sort the list using 6 methods sort (personList, fileName); }
// Sort sorted array list of Persons for (int file = 0; file < 5; file++) { fileName = sorted[file];
System.out.println(); System.out.println ("ArrayLists with Persons Sorted"); System.out.println ("Sorting the " + size[file] + " item array using each of five algorithms"); System.out.println ("======================================================="); System.out.println();
// Sort the list using 6 methods sort (personList, fileName); }
// Sort reverse sorted array list of Persons for (int file = 0; file < 5; file++) { fileName = revsorted[file];
System.out.println(); System.out.println ("ArrayLists with Persons Reverse Sorted"); System.out.println ("Sorting the " + size[file] + " item array using each of five algorithms"); System.out.println ("======================================================="); System.out.println();
// Sort the list using 6 methods sort (personList, fileName); } }
/** * Populates a list of Persons from a file * * @param list */ public static void populate (ArrayList
fin.close(); }
/** * Prints the list of Persons * * @param list */ public static void print (ArrayList
/** * Calls all five types of sorts * * @param list */ public static void sort (ArrayList
// Call insertion sort populate (list, fileName); insertionSort(list); System.out.println ("Insertion Sort"); System.out.println ("The number of compares: " + numCompares + " "); print (list);
// Call quick sort populate (list, fileName); quickSort(list); System.out.println("Quick Sort"); System.out.println("The number of compares: " + numCompares + " "); print(list);
// Call merge sort populate (list, fileName); mergeSort(list); System.out.println ("Merge Sort"); System.out.println ("The number of compares: " + numCompares + " "); print (list);
// Call heap sort populate (list, fileName); heapSort(list); System.out.println("Heap Sort"); System.out.println ("The number of compares: " + numCompares + " "); print (list); }
/**
* Sorts a list of Persons using selection sort
*
* @param list
*/
public static void selectionSort(ArrayList
// Provide this code from Lab3: add in numCompares for (int i = 0; i < list.size(); i++) { for (int j = i; j < list.size(); j++) { numCompares++; if (list.get(i).name >list.get(i).name) { Person p = list.get(i); list.set(i, list.get(j)); list.set(j, p); } } } } /** * Sorts a list of Persons using insertion sort * * @param list */ public static void insertionSort(ArrayList
// Provide this code from Lab3: add in numCompares int n = list.length; for (int i = 1; i < n; ++i) { Person temp = list.get(i); int j = i - 1; numCompares++; while (j >= 0 && list.get(j).name > temp.name) { list.set(j + 1, list.get(j)); j = j - 1; } list.set(j + 1, temp); } } /** * Sorts a list of Persons using merge sort * * @param list */ public static void mergeSort(ArrayList
// Provide this code if (list == null) { return; } if (list.size() > 1) { int mid = list.size() / 2; // Split left part Person[] left = new Person[mid]; for (int i = 0; i < mid; i++) { left[i] = list[i]; } // Split right part Person[] right = new Person[list.size() - mid]; for (int i = mid; i < list.size(); i++) { right[i - mid] = list[i]; } mergeSort(left); mergeSort(right); int i = 0; int j = 0; int k = 0; // Merge left and right arrays while (i < left.size() && j < right.size()) { numCompares++; if (left[i].name < right[j].name) { list[k] = left[i]; i++; } else { list[k] = right[j]; j++; } k++; } // Collect remaining elements while (i < left.size()) { list[k] = left[i]; i++; k++; } while (j < right.length) { list[k] = right[j]; j++; k++; } } } /** * Merge two sorted lists * * @param list1 * @param list2 * @param temp */ public static void merge(ArrayList
// Provide this code and add in numCompares int i = 0, j = 0, k = 0, n1 = list1.size(), n2 = list2.size();
// Traverse both array while (i < n1 && j < n2) { if (list1.get(i) < list2.get(j)) temp.set(k++, list1.get(i++)); else temp.set(k++, list2.get(j++)); }
// Store remaining elements of first array while (i < n1) temp.set(k++, list1.get(i++));
// Store remaining elements of second array while (j < n2) temp.get(k++, list2.get(j++)); } /** * QuickSort start method * @param list */ public static void quickSort(ArrayList
Heap
// Add elements to the heap
for (int i = 0; i < list.size(); i++) {
heap.add(list.get(i));
}
// Remove elements from the heap
for (int i = list.size() - 1; i >= 0; i--) {
list.set(i, heap.remove());
}
numCompares = heap.getNumCompares();
}
}
..........................................................
public class Person implements Comparable
public Person (String name, int year, int month, int day) { this.name = name; this.birthday = new MyDate (year, month, day); }
@Override public int compareTo (Person p) { int comp = birthday.compareTo (p.birthday); if (comp == 0) { comp = name.compareTo (p.name); } return comp; }
@Override public String toString() { return (name + ": " + this.birthday.toString() + " "); } }
................................................................................
public class MyDate implements Comparable
public MyDate (int year, int month, int day) { this.year = year; this.month = month; this.day = day; }
@Override public int compareTo (MyDate d) { int comp = 0; if (year > d.year) { comp = 1; } else if (year < d.year) { comp = -1; } else { if (month > d.month) { comp = 1; } else if (month < d.month) { comp = -1; } else { if (day > d.day) { comp = 1; } else if (day < d.day) { comp = -1; } } } return comp; } @Override public String toString() { return month + "-" + day + "-" + year ; } }
...................................................................................
import java.util.ArrayList; public class Heap
/** * Create a default heap */ public Heap() { numCompares = 0; }
/** * Create a heap from an array of objects * @param objects * */ public Heap (E[] objects) { numCompares = 0; for (int i = 0; i < objects.length; i++) { add (objects[i]); } } /** * Add a new object into the heap * Return the number of compares */ public int add (E newObject) { list.add (newObject); // Append to the heap int currentInd = list.size()-1; // last node while (currentInd > 0) { int parentInd = (currentInd - 1) / 2; numCompares++; if (list.get (currentInd).compareTo (list.get (parentInd)) > 0) { // Swap when current > parent E temp = list.get (currentInd); list.set (currentInd, list.get (parentInd)); list.set (parentInd, temp); } else break; // the tree is a heap now currentInd = parentInd; } return numCompares; } /** Remove the root from the heap */ public E remove() { if (list.size() == 0) return null; E removedObject = list.get (0); list.set (0, list.get (list.size() - 1)); list.remove (list.size() - 1); int currentInd = 0; while (currentInd < list.size()) { int ltChildInd = 2 * currentInd + 1; int rtChildInd = 2 * currentInd + 2; if (ltChildInd >= list.size()) break; int maxInd = ltChildInd; if (rtChildInd < list.size()) { numCompares++; if (list.get (maxInd).compareTo (list.get (rtChildInd)) < 0) { maxInd = rtChildInd; } } // Swap if current < max numCompares++; if (list.get (currentInd).compareTo (list.get (maxInd)) < 0) { E temp = list.get (maxInd); list.set (maxInd, list.get (currentInd)); list.set (currentInd, temp); currentInd = maxInd; } else break; // The tree is a heap } return removedObject; }
/** * Get the number of nodes in the tree * @return int */ public int getSize() { return list.size(); }
/** * Get the number of compares * @return int */ public int getNumCompares() { return numCompares; } }
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started