package loon.utils; import java.util.Comparator; import java.util.List; public class InsertionSorter<T> extends Sorter<T> { @Override public void sort(final T[] arrays, final int start, final int end, final Comparator<T> c) { for(int i = start + 1; i <end; i++) { final T current = arrays[i]; T prev = arrays[i - 1]; if(c.compare(current, prev) < 0) { int j = i; do { arrays[j--] = prev; } while(j > start && c.compare(current, prev = arrays[j - 1]) < 0); arrays[j] = current; } } return; } @Override public void sort(final List<T> list, final int start, final int end, final Comparator<T> c) { for(int i = start + 1; i < end; i++) { final T current = list.get(i); T prev = list.get(i - 1); if(c.compare(current, prev) < 0) { int j = i; do { list.set(j--, prev); } while(j > start && c.compare(current, prev = list.get(j - 1)) < 0); list.set(j, current); } } return; } @Override public void sort(final TArray<T> list, final int start, final int end, final Comparator<T> c) { for(int i = start + 1; i < end; i++) { final T current = list.get(i); T prev = list.get(i - 1); if(c.compare(current, prev) < 0) { int j = i; do { list.set(j--, prev); } while(j > start && c.compare(current, prev = list.get(j - 1)) < 0); list.set(j, current); } } return; } }