import java.util.Comparator; public class InsertionSort { public static void sort(E[] data, Comparator c) { int numSorted = 1; while (numSorted < data.length) { // this is the next unsorted value; copy it E temp = data[numSorted]; // find where to insert it, shifting other values // over if necessary int i; for (i = numSorted; i > 0; i--) { if (c.compare(temp, data[i-1]) < 0) { data[i] = data[i-1]; } else { break; } } // insert unsorted value into correct place data[i] = temp; numSorted++; } } }