Merge Sort (Sort an Array) Visualizer & Step-by-Step Algorithm Solution

Sort an array of integers in ascending order using divide-and-conquer Merge Sort with O(n log n) time complexity.

Category: arrays | Difficulty: Medium

Tags: Divide and Conquer, Merge Sort, Recursion, Sorting, Array

Merge Sort (Sort an Array)

Subarray to Sort (length: 4)
5
0
2
1
3
2
1
3
100%
state
array length4
Initialization
1/40
Explanation

Starting Merge Sort on input array [5, 2, 3, 1].

Source Code
1function sortArray(nums: number[]): number[] {
2 if (nums.length <= 1) return nums;
3 const mid = Math.floor(nums.length / 2);
4 const left = sortArray(nums.slice(0, mid));
5 const right = sortArray(nums.slice(mid));
6 return merge(left, right);
7}
8
9function merge(arr1: number[], arr2: number[]): number[] {
10 const result: number[] = [];
11 let i = 0;
12 let j = 0;
13 while (i < arr1.length && j < arr2.length) {
14 if (arr1[i] < arr2[j]) result.push(arr1[i++]);
15 else result.push(arr2[j++]);
16 }
17 while (i < arr1.length) result.push(arr1[i++]);
18 while (j < arr2.length) result.push(arr2[j++]);
19 return result;
20}