// SelectionSort
import java.io.*;

public class SelectionSort 
{
    private int [] a;
               
    // make a private copy of the array
    private void copyArray(int [] data)
    {
        a = new int[data.length];
        
        for ( int i = 0; i < data.length; i++ )
        {
            a[i] = data[i];
        }
    }
    
    // Copies the data into array and sorts with Selection Sort
    public void sort( int [] data )
    {
        if ( data == null ) return;
        
        int min, temp;
        
        copyArray( data );
        
        for ( int i = 0; i < a.length - 1; i++ )
        {
            // find minimum value in a[i] through a[n-1]
            min = i;
            for ( int j = i+1; j < a.length; j++ )
            {
                if ( a[j] < a[min] )
                    min = j;
            }
            
            temp = a[i];
            a[i] = a[min];
            a[min] = temp;
        }
    }
    
    // return a new copy of the array
    public int[] getSorted()
    {
        int [] ret = new int[a.length];
        
        for ( int i = 0; i < ret.length; i++ )
        {
            ret[i] = a[i];
        }
        
        return ret;
    }

}

