Computer >> Computer tutorials >  >> Programming >> Javascript

Using merge sort to recursive sort an array JavaScript


We are required to write a JavaScript function that takes in an array of Numbers. The function should sort the array using the merge sort algorithm.

Merge Sort

Merge Sort is made up of two parts or processes −

  • a recursive part that splits up a collection into single units,
  • and then an iterative part that combines them back together in the right order.

Example

const arr = [23, 4, 67, 32, 1, 7, 56, 5, 89];
const mergeSort = arr => {
   if (arr.length < 2){
      return arr;
   }
   const middle = Math.floor(arr.length / 2);
   const left = arr.slice(0, middle), right = arr.slice(middle, arr.length);
   return merge(mergeSort(left), mergeSort(right));
};
const merge = (left, right) => {
   const res = [];
   while (left.length && right.length) {
      if (left[0] <= right[0]){
         res.push(left.shift());
      }
      else{
         res.push(right.shift());
      };
   }
   while (left.length){
      res.push(left.shift());
   };
   while (right.length){
      res.push(right.shift());
   };
   return res;
};
console.log(mergeSort(arr));

Output

And the output in the console will be −

[
   1, 4, 5, 7, 23,
   32, 56, 67, 89
]