import java.util.Comparator; public class SelectionSort { public static void swap(E[] arr, int i, int j) { E temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } public static void sort(E[] data, Comparator c) { int numUnsorted = data.length; while (numUnsorted > 0) { // find the maximum value among unsorted data int max = 0; // index of maximum value for (int i = 1; i < numUnsorted; i++) { if (c.compare(data[max], data[i]) < 0) { max = i; } } // swap the thing in the last position with the max swap(data, max, numUnsorted - 1); numUnsorted--; } } }