Click on the applet below to see the algorithm run.
/*
* @(#)SelectionSortAlgorithm.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.
*
*
* A selection sort demonstration algorithm based on
* SortAlgorithm.java and
* SortItem.java.
*
*/
class SelectionSortAlgorithm extends SortAlgorithm
{
void sort(int a[]) throws Exception
{
// Loop through the array, finding the next minimum value &
// swapping it with the first elt. in the unsorted part of the array.
for (int i = 0; i < a.length - 1; i++ )
{
int minIndex = i; // index of min value
int min = a[minIndex]; // min value
// Find the minimum value in the unsorted part of the array.
for ( int j = i + 1; j < a.length; j++ )
{
if (stopRequested)
{ return;
}
// If this element is less than min it becomes the min.
if ( a[j] < min )
{
minIndex = j;
min = a[minIndex];
}
pause(i,j);
}
// Swap the first item in the unsorted part of the array
// with the minimum item (even if the first item is the min).
int T = a[minIndex];
a[minIndex] = a[i];
a[i] = T;
}
}
}
/*
* 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