An Improved Insert Sort Algorithm

From Java Example Source Code

Jump to: navigation, search

Contents

[edit] Overview - An Improved Insert Sort Algorithm

This is a Java example program for Insertion sort

[edit] Java Source Code

  • Package: example.sortsearch
  • File: ExecDemoSort2.java
package example.sortsearch;
 
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;
    }
}

[edit] What Result You Can Get

Run the program, you will get:

Before sorting:
   Last name: Jo, First name: Yin, Age: 24
   Last name: Pengzhou, First name: Yin, Age: 59
   Last name: James, First name: Chen, Age: 37
   Last name: Chirs, First name: Paul, Age: 37
   Last name: Rob, First name: Tom, Age: 43
   Last name: Carlo, First name: Sato, Age: 21
   Last name: Al, First name: Henry, Age: 29
   Last name: Nancy, First name: Jose, Age: 72
   Last name: Vang, First name: Minh, Age: 22
After sorting:
   Last name: Al, First name: Henry, Age: 29
   Last name: Carlo, First name: Sato, Age: 21
   Last name: Chirs, First name: Paul, Age: 37
   Last name: James, First name: Chen, Age: 37
   Last name: Jo, First name: Yin, Age: 24
   Last name: Nancy, First name: Jose, Age: 72
   Last name: Pengzhou, First name: Yin, Age: 59
   Last name: Rob, First name: Tom, Age: 43
   Last name: Vang, First name: Minh, Age: 22

[edit] Required External Libraries and/or Files for this Java Example

Need nothing.


[edit] How to Run this Java Example Program

We recommend running this Java example program with Eclipse.

For assistance in working with Eclipse, please see How to Run Java Program with Eclipse.

It's fairly easy.



[edit] Question & Answer

Any question?

Click edit and post your question or answer here.


Personal tools