user7581677
user7581677

Reputation:

What is the answer to this recursive function?

This is the method for merge-sort:

    private void doMergeSort(int lowerIndex, int higherIndex) {

        if (lowerIndex < higherIndex) {

        int middle = lowerIndex + (higherIndex - lowerIndex) / 2;

        System.out.println("Lower index="+lowerIndex+"   Middle="+middle+ "   Higher index="+higherIndex);

        doMergeSort(lowerIndex, middle);

        doMergeSort(middle + 1, higherIndex);

        mergeParts(lowerIndex, middle, higherIndex);//never mind this method
    }
}

The output for doMergeSort(0,9) is as given below:

    Lower index=0   Middle=4   Higher index=9
    Lower index=0   Middle=2   Higher index=4
    Lower index=0   Middle=1   Higher index=2
    Lower index=0   Middle=0   Higher index=1
    Lower index=3   Middle=3   Higher index=4//This line
    Lower index=5   Middle=7   Higher index=9
    Lower index=5   Middle=6   Higher index=7
    Lower index=5   Middle=5   Higher index=6
    Lower index=8   Middle=8   Higher index=9
    4 11 23 28 43 45 65 77 89 98 //never mind this part too

How did the 4th line of the output(as marked with comment) come into existence? Please explain.

Upvotes: 1

Views: 59

Answers (1)

asad_hussain
asad_hussain

Reputation: 2001

Here is the diagramatic representation of the control flow of your code which will help you to get your doubt cleared.

enter image description here

Upvotes: 1

Related Questions