algorist/src/main/java/net/abhinavsarkar/algorist/sort/InsertionSorter.java

43 lines
1.1 KiB
Java

package net.abhinavsarkar.algorist.sort;
import java.util.Arrays;
import net.abhinavsarkar.algorist.Sorter;
public class InsertionSorter<T> implements Sorter<T>
{
@Override
public T[] sort(T[] input, Comparator<T> comparator)
{
for (int i = 1; i < input.length; i++) {
for (int j = i; j > 0; j--) {
if (comparator.compare(input[j], input[j-1]) < 0) {
swap(input, j, j - 1);
} else {
break;
}
}
}
return input;
}
private void swap(T[] input, int i, int j)
{
if (i == j) {
return;
}
T temp = input[i];
input[i] = input[j];
input[j] = temp;
}
public static void main(String[] args)
{
Sorter<String> sorter = new InsertionSorter<>();
String[] sorted =
sorter.sort(new String[]{"abhinav", "sarkar", "barista", "jordan", "data"},
(s, anotherString) -> anotherString.compareTo(s));
System.out.println(Arrays.toString(sorted));
}
}