Insertion Sort - Part 2

  • + 0 comments

    My Java solution with o(n^2) time complexity and o(1) space complexity:

    public static void insertionSort2(int n, List<Integer> arr) {
            if(n == 1) System.out.println(arr.get(0)); //len of 1 is already sorted
            
            //separate arr into sorted and unsorted portions
            for(int i = 1; i < arr.size(); i++){
                int j = i - 1;
                int currVal = arr.get(i);
                int prevVal = arr.get(j);
                
                //compare prev element with curr element
                if(currVal < prevVal){
                    while(currVal < prevVal){
                        arr.set(j + 1, prevVal);
                        arr.set(j, currVal);
                        j--;
                        if(j >= 0) prevVal = arr.get(j);
                        else break;
                    }
                }
                
                //print the arr
                arr.forEach(l -> System.out.print(l + " "));
                System.out.println();
            }
        }