JSFiddle - React, Tailwind, and code Playground

by Diana Lemen

JavaScript

const values = [1,2,3,4,3,2,4,3,5,6,7,4,5,6,7,8,9,0,10];

function merge(leftArr, rightArr) {
	let mergedArr = [];
  
  if(!leftArr.length && !rightArr.length) return [];
 
	while(leftArr.length && rightArr.length) {
      if(leftArr[0] > rightArr[0]) {
        mergedArr = [rightArr[0], ...mergedArr]
      } else {
        mergedArr = [leftArr[0], ...mergedArr]
      }
  
      leftArr.shift();
      rightArr.shift();
      
      mergedArr = [...mergedArr, ...leftArr, rig]
    }
  
  return mergedArr;
}


function split(arr) {
	const mid = Math.ceil(arr.length / 2);
  
  if(arr.length === 0) return arr;
  
 	return split(
    merge(arr.slice(0, mid), arr.slice(mid, arr.length))
  );
}

console.log(split(values));