complete insertion sort with test, benchmark