Click on the applet below to see the algorithm run.
/* * @(#)InsertionSortAlgorithm.java 1.0 97/02/15 Alyce Brady * based on @(#)BubbleSortAlgorithm.java 1.6f 95/01/31 James Gosling * * which had Copyright (c) 1994-1996 Sun Microsystems, Inc. All Rights Reserved. * * See additional copyright information below. * * * An insertion sort demonstration algorithm based on * SortAlgorithm.java and * SortItem.java. * */ class InsertionSortAlgorithm extends SortAlgorithm { void sort(int a[]) throws Exception { // Loop through the array & put each item in the proper slot, // shifting other items out of the way as you go. for (int i = 1; i < a.length; i++ ) { int value = a[i]; // next item to be inserted in order int j; // Back up in the array to find the spot for value. for ( j = i - 1; j >= 0 && a[j] > value; j-- ) { if (stopRequested) { return; } // This element is bigger than the element being inserted, // so move it up one slot. a[j+1] = a[j]; pause(i,j); } // a[j] is the item that should precede value. // Put value after it. a[j+1] = value; } } } /* * Permission information for original BubbleSort algorithm: * * Permission to use, copy, modify, and distribute this software * and its documentation for NON-COMMERCIAL or COMMERCIAL purposes and * without fee is hereby granted. * Please refer to the file http://java.sun.com/copy_trademarks.html * for further important copyright and trademark information and to * http://java.sun.com/licensing.html for further important licensing * information for the Java (tm) Technology. * * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. * * THIS SOFTWARE IS NOT DESIGNED OR INTENDED FOR USE OR RESALE AS ON-LINE * CONTROL EQUIPMENT IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE * PERFORMANCE, SUCH AS IN THE OPERATION OF NUCLEAR FACILITIES, AIRCRAFT * NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL, DIRECT LIFE * SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH THE FAILURE OF THE * SOFTWARE COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SEVERE * PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES"). SUN * SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR * HIGH RISK ACTIVITIES. */
Original sorting algorithms by:
James Gosling, jag@firstperson.com