diff --git a/algorithms/JavaScript/src/sorting/merge-sort.js b/algorithms/JavaScript/src/sorting/merge-sort.js index 9b69bb6a..5e6fd6d3 100644 --- a/algorithms/JavaScript/src/sorting/merge-sort.js +++ b/algorithms/JavaScript/src/sorting/merge-sort.js @@ -1,32 +1,28 @@ function merge(left, right) { - let arr = [] - // Break out of loop if any one of the array gets empty - while (left.length && right.length) { - // Pick the smaller among the smallest element of left and right sub arrays - if (left[0] < right[0]) { - arr.push(left.shift()) - } else { - arr.push(right.shift()) - } + const arr = []; + // Break out of loop if any one of the array gets empty + while (left.length && right.length) { + // Pick the smaller among the smallest element of left and right sub arrays + if (left[0] < right[0]) { + arr.push(left.shift()); + } else { + arr.push(right.shift()); } - - // Concatenating the leftover elements - // (in case we didn't go through the entire left or right array) - return [ ...arr, ...left, ...right ] -} - -function mergeSort(array) { - const half = array.length / 2 - - // Base case or terminating case - if(array.length < 2){ - return array } - - const left = array.splice(0, half) - return merge(mergeSort(left),mergeSort(array)) -} -//testing -array = [4, 8, 7, 2, 11, 1, 3]; -console.log(mergeSort(array)); \ No newline at end of file + // Concatenating the leftover elements + // (in case we didn't go through the entire left or right array) + return [...arr, ...left, ...right]; +} +function mergeSort(array) { + const half = array.length / 2; + + // Base case or terminating case + if (array.length < 2) { + return array; + } + const left = array.splice(0, half); + return merge(mergeSort(left), mergeSort(array)); +} +// testing +console.log(mergeSort([4, 8, 7, 2, 11, 1, 3]));