Skip to the content.
Home This week's review ticket Replit code team repository Tech Talks Lecture Notes

Merge Sorting Algorithms analysis:

Terms to know:

//method begin
divide(0,array.size()-1);
//method end


public void divide(int start, int end) {
        if (start < end && (end - start) >= 1) {
            int mid = (end + start) / 2;
            //recursion
            divide(start, mid);
            divide(mid + 1,end );
            merger(start, mid, end);
        }
    }
    public void merger(int start, int mid, int end){

        //arraylist that will be the new sorted array
        ArrayList<Integer> mergedSortedArray = new ArrayList<>();

        int leftIndex = start;
        int rightIndex = mid+1;

        while(leftIndex<=mid && rightIndex<=end){
            if(input.get(leftIndex)<=input.get(rightIndex)){
                mergedSortedArray.add(input.get(leftIndex));
                leftIndex++;
            }else{
                mergedSortedArray.add(input.get(rightIndex));
                rightIndex++;
            }
            compare++;
        }

        //Either of below while loop will execute
        while(leftIndex<=mid){
            mergedSortedArray.add(input.get(leftIndex));
            leftIndex++;
        }

        while(rightIndex<=end){
            mergedSortedArray.add(input.get(rightIndex));
            rightIndex++;
        }

        int i = 0;
        int j = start;


        while(i<mergedSortedArray.size()){
            input.set(j, mergedSortedArray.get(i++));
            j++;
        }

    }

Big O complexity:

Analytics:

No swaps in merge sort needed

Around 55 thousand comparisons done

total time taken for the 12 tests is .09 seconds

average time taken for each test is .0076 seconds

shortest time taken was .00299 seconds

longest time taken was .0259 seconds