public class Selection
{
    /** Sort the array a using selection sort
	Precondition: a is not null
	Postcondition: a is sorted in increasing order
    */
    public static void selectionSort(int[] a) {
	for (int current = 0; current < a.length; current++) {
	    // content of a for positions to the left of
	    // current are in their final sorted position
	    int where = current; // it will contain position of smallest value
			// in a[current], .., a[a.length-1]
	    for (int k = current+1; k < a.length; k++) {
		// a[where] is less or equal to a[current] .. a[k-1]
		if (a[k] < a[where])
		    where = k;
	    }
	    // swap a[where] with a[current]
	    int temp = a[current];
	    a[current] = a[where];
	    a[where] = temp;
	}
    }

    /** Print out on a line the content of a */
    public static void printArray(int[] a) {
	for (int x: a)
	    System.out.print(x + "  ");
	System.out.println();
    }

    public static void main(String[] args) {
	int[] joe = { 7,1,8,3,2,5,4};
	selectionSort(joe);
	printArray(joe);	
    }
}
