fix(linter): merge sort JavaScript (#272)

pull/273/head
Divesh Arora 2021-04-27 22:28:07 +05:30 committed by GitHub
parent 1e85e00602
commit 34d7f59beb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 24 additions and 28 deletions

View File

@ -1,32 +1,28 @@
function merge(left, right) { function merge(left, right) {
let arr = [] const arr = [];
// Break out of loop if any one of the array gets empty // Break out of loop if any one of the array gets empty
while (left.length && right.length) { while (left.length && right.length) {
// Pick the smaller among the smallest element of left and right sub arrays // Pick the smaller among the smallest element of left and right sub arrays
if (left[0] < right[0]) { if (left[0] < right[0]) {
arr.push(left.shift()) arr.push(left.shift());
} else { } else {
arr.push(right.shift()) arr.push(right.shift());
} }
} }
// Concatenating the leftover elements // Concatenating the leftover elements
// (in case we didn't go through the entire left or right array) // (in case we didn't go through the entire left or right array)
return [ ...arr, ...left, ...right ] return [...arr, ...left, ...right];
} }
function mergeSort(array) { function mergeSort(array) {
const half = array.length / 2 const half = array.length / 2;
// Base case or terminating case // Base case or terminating case
if (array.length < 2) { if (array.length < 2) {
return array return array;
} }
const left = array.splice(0, half);
const left = array.splice(0, half) return merge(mergeSort(left), mergeSort(array));
return merge(mergeSort(left),mergeSort(array))
} }
// testing // testing
array = [4, 8, 7, 2, 11, 1, 3]; console.log(mergeSort([4, 8, 7, 2, 11, 1, 3]));
console.log(mergeSort(array));