package sorting;

public class InsertSort {
    public int[] ascSort(int[] numbers) {
        for (int i = 1; i < numbers.length; i++) {
            int insertElement = numbers[i];
            int insertPosition = i;
            for (int j = insertPosition - 1; j >= 0; j--) {
                if (insertElement < numbers[j]) {
                    numbers[j + 1] = numbers[j];
                    insertPosition--;
                } else {
                    //return numbers;
                    break;
                }
            }
            numbers[insertPosition] = insertElement;
            //Inserted the new element
        }
        return numbers;
    }

    public int[] descSort(int[] numbers) {
        for(int i = 1; i < numbers.length; i++) {
            int insertElement = numbers[i];
            int insertPosition = i;
            for(int j = insertPosition - 1; j >= 0; j--) {
                if(insertElement > numbers[j]) {
                    numbers[j + 1] = numbers[j];
                    insertPosition--;
                }
                else {
                    //return numbers;
                    break;
                }
            }
            numbers[insertPosition] = insertElement;
            //Inserted the new element
        }
        return numbers;
    }

    public void print(int[] numbers) {
        System.out.println("Insertion Sorted numbers are:");
        for(int i = 0; i < numbers.length; i++) {
            System.out.print(numbers[i] + " ");
        }
        System.out.println();
    }
}

package sorting;

public class InsertionSortDemo {
    public static void main(String[] args) {
        InsertSort   sorting = new InsertSort();
        int[] numbers = {80, 70, 60, 50, 95};
        int[] sortedNumbers;
        sortedNumbers = sorting.ascSort(numbers);
        sorting.print(sortedNumbers);

        sortedNumbers = sorting.descSort(numbers);
        sorting.print(sortedNumbers);
    }
}