Insert Sort for objects
public class ObjectInsertSort { private Person[] a; private int nElems; public ObjectInsertSort(int max) { a = new Person[max]; nElems = 0; } // put person into array public void insert(String last, String first, int age) { a[nElems] = new Person(last, first, age); nElems++; } public void display() { for (int j = 0; j < nElems; j++) a[j].displayPerson(); } public void insertionSort() { int in, out; for (out = 1; out < nElems; out++) { Person temp = a[out]; // out is dividing line in = out; // start shifting at out while (in > 0 && // until smaller one found, a[in - 1].getLast().compareTo(temp.getLast()) > 0) { a[in] = a[in - 1]; // shift item to the right --in; // go left one position } a[in] = temp; // insert marked item } } public static void main(String[] args) { int maxSize = 100; // array size ObjectInsertSort arr; arr = new ObjectInsertSort(maxSize); // create the array arr.insert("Jo", "Yin", 24); arr.insert("Pengzhou", "Yin", 59); arr.insert("James", "Chen", 37); arr.insert("Chirs", "Paul", 37); arr.insert("Rob", "Tom", 43); arr.insert("Carlo", "Sato", 21); arr.insert("Al", "Henry", 29); arr.insert("Nancy", "Jose", 72); arr.insert("Vang", "Minh", 22); System.out.println("Before sorting:"); arr.display(); // display items arr.insertionSort(); // insertion-sort them System.out.println("After sorting:"); arr.display(); // display them again } } class Person { private String lastName; private String firstName; private int age; public Person(String last, String first, int a) { lastName = last; firstName = first; age = a; } public void displayPerson() { System.out.print(" Last name: " + lastName); System.out.print(", First name: " + firstName); System.out.println(", Age: " + age); } public String getLast() { return lastName; } }