length
of the array is less than 2
, return the array.Math.floor()
to calculate the middle point of the array.Array.prototype.slice()
to slice the array in two and recursively call mergeSort()
on the created subarrays.Array.from()
and Array.prototype.shift()
to combine the two sorted subarrays into one.const mergeSort = arr => { if (arr.length < 2) return arr; const mid = Math.floor(arr.length / 2); const l = mergeSort(arr.slice(0, mid)); const r = mergeSort(arr.slice(mid, arr.length)); return Array.from({ length: l.length + r.length }, () => { if (!l.length) return r.shift(); else if (!r.length) return l.shift(); else return l[0] > r[0] ? r.shift() : l.shift(); }); };
mergeSort([5, 1, 4, 2, 3]); // [1, 2, 3, 4, 5]
Subscribe to get resources directly to your inbox. You won't receive any spam! ✌️