import java.util.Arrays; public class SelectionSort { public static > void sort(T[] arr, int s, int e) { for (int i = s; i < e-1; i++) { /* ----------------------------------------------- Find the minimum in the arr[i..n-1] ----------------------------------------------- */ T min = arr[i]; // Assume first element is min int minIndex = i; // Index where min is found for ( int k = minIndex+1; k < e; k++ ) if ( arr[k].compareTo(min) < 0 ) // Compare arr[k] and min { min = arr[k]; // Update min minIndex = k; // Update its index } /* ------------------------------------------------------ Swap arr[i] with arr[minIndex] if necessary ------------------------------------------------------ */ if ( minIndex != i ) exch( arr, i, minIndex ); // Swap arr[minIndex] and arr[i] } } private static > void exch( T[] a, int i, int j ) { T help; help = a[i]; a[i] = a[j]; a[j] = help; } }