func InsertSort(toBeSorted interfaces.Swapable) { length := toBeSorted.Len() for i := 0; i < length-1; i++ { current := toBeSorted.Element(i + 1) j := i for ; j >= 0 && toBeSorted.Element(j).IsGreaterThan(current); j-- { toBeSorted.Swap(j+1, j) } toBeSorted.SetElement(j+1, current) } }