package com.hithomelabs.princeton1.module5;

public class Insertion<E> extends AbstractCustomSorts<E> {
    @Override
    public void sort(E[] arr) {
        int N = arr.length;

        for(int i=0; i<N; i++){
            for(int j=i; j>0; j--){
                if(less( (Comparable<E>) arr[j], arr[j-1]))
                    exch(arr, j, j-1);
                else
                    break;
            }
        }
    }

    public void sort(E[] arr, int h) {
        int N = arr.length;

        for(int i=0; i<N; i++){
            for(int j=i; j>0; j=j-h){
                if(less( (Comparable<E>) arr[j], arr[j-1]))
                    exch(arr, j, j-1);
                else
                    break;
            }
        }
    }
}

