javaarrayssortinginsertion

Sorting elements using insertion sort


If I am using insertion sort as shown below and have an array with some elements that are integers and then some that are null - How would I go about sorting that array with the null elements at the end using insertion sort?

For example: [1, 2, 6, null, 9, 5, 4, null, 2, 3] To: [1, 2, 2, 3, 4, 5, 6, 9, null, null]


Solution

  • One option is to write a compareTo function that handles null:

    public static <T extends Comparable<? super T>> int compareTo(T a, T b)
    {
        if (a == null && b == null) return 0;
        if (a == null) return 1;
        if (b == null) return -1;
        return a.compareTo(b);
    }
    

    Then have the insertion sort use that:

    while (compareTo >= 0 && compareTo(newElement, array[compareTo]) < 0) {