package plp.sort; public class InsertionSort implements Sort { private static SortableData data; public static final InsertionSort INSERTION_SORT = new InsertionSort(); private InsertionSort() { } private static void insert(int i) { if (i < data.length() - 1) { if (data.compare(i, i + 1) > 0) { data.swap(i, i + 1); insert(i+1); } } } public void doSort(SortableData data) { this.data = data; for (int i = data.length() - 2; i >= 0; --i) { insert(i); } } public static void main(String [] args) { SortableDataStatistic statData = new SortableDataStatistic(new SortableDataTracer(new SortableArray(args))); INSERTION_SORT.doSort(statData); for (int i = 0; i < args.length; ++i) { System.out.println(args[i]); } System.out.println(statData.getAccessStat() + " access, " + statData.getCompareStat() + " compare, " + statData.getSwapStat() + " swap"); } }