Merge Sort (Tree Visualization)

Visualizing the Divide and Conquer process on a Recursion Tree

Unsorted
Processing (Divide)
Comparing
Sorted (Merge)
Step: 0
Pseudocode (Merge Sort)

function mergeSort(arr, left, right) {
if (left >= right) return; // Base case (Leaf)
let mid = Math.floor((left + right) / 2);
// DIVIDE AND CONQUER
mergeSort(arr, left, mid); // Left
mergeSort(arr, mid + 1, right); // Right
// MERGE (Conquer)
merge(arr, left, mid, right);
}
function merge(arr, left, mid, right) {
let temp = [], i = left, j = mid + 1;
while (i <= mid && j <= right) {
if (arr[i] <= arr[j]) temp.push(arr[i++]);
else temp.push(arr[j++]);
}
// Copy remaining elements...
for (let k = 0; k < temp.length; k++) {
arr[left + k] = temp[k]; // Write to parent array
}
}
Call Stack Logs READY
System waiting for command...