Object Sort

Object Sort

For simplicity we’ve applied the sorting algorithms we’ve looked at thus far to a primitive data type: int. However, sorting routines will more likely be applied to objects than primitive types. Accordingly, we show a Dart program that sorts an array of Person objects.

$ dart 02_simple_sorting/object_sort.dart
import 'dart:io';

class Person {
  String firstName;
  String lastName;
  int age;

  // Constructor shorthand
  Person(this.lastName, this.firstName, this.age) {}

  /// Display Person Data
  void displayPerson() {
    stdout.write('Last Name $lastName, ');
    stdout.write('First Name $firstName, ');
    stdout.writeln('Age $age');
  }

  String getLastName() {
    return lastName;
  }
}

class ArrayInObject {
  List<Person> a;
  int nElems;

  ArrayInObject(int max) {
    a = new List<Person>(max);
    nElems = 0;
  }

  /// Insert Data to Array
  void insert(String lastName, String firstName, int age) {
    a[nElems] = new Person(lastName, firstName, age);
    nElems ++; // increment size
  }

  /// Display array contents
  void display() {
    for(int j = 0; j < nElems; j++) {
      a[j].displayPerson();
    }
  }

  /// Insertion Sort array
  void insertionSort() {
    int _in, out;
    for(out = 1; out < nElems; out ++) {
      Person temp = a[out];
      _in = out;
      while(_in > 0 && (a[_in - 1].getLastName().compareTo(temp.getLastName()) > 0)) {
        a[_in] = a[_in - 1];
        _in --;
      }
      a[_in] = temp;
    }
  }
}

void main() {
  int maxSize = 100; // array size
  ArrayInObject array = new ArrayInObject (maxSize); // create instance of ArrayInObject

  // Insert 10 items
  array.insert('Evans', 'Patty', 24);
  array.insert('Smith', 'Lorraine', 37);
  array.insert('Yee', 'Tom', 43);
  array.insert('Adams', 'Henry', 63);
  array.insert('Hashimoto', 'Sato', 21);
  array.insert('Stimson', 'Henry', 29);
  array.insert('Velasquez', 'Jose', 72);
  array.insert('Lamarque', 'Henry', 54);
  array.insert('Vang', 'Minh', 22);
  array.insert('Creswell', 'Lucinda', 18);

  stdout.writeln('Before Sorting');
  array.display();

  array.insertionSort();

  stdout.writeln('After Sorting');
  array.display();
}