Java Implementation
public class Insertion
{
public static void sort(Comparable[] a)
{
int N = a.length;
for (int i = 0; i < N; i++)
{
for (int j=i; j>0; j--)
{
if(less(a[j], a[j-1]))
exch(a,j,j-1);
else
break;
}
}
}
private static boolean less(Comparable v, Comparable w) {...}
private static void exch(Comparable[] a, int i, int j) {...}
The time cost is quadratic. But Insertion sort can run linear time for partial-sorted arrays. This is going to be used afterward.