Skip to content

Instantly share code, notes, and snippets.

@ltfschoen
Created March 27, 2017 09:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ltfschoen/d17e4fe25f8b67d8f34267b998c4fa1b to your computer and use it in GitHub Desktop.
Save ltfschoen/d17e4fe25f8b67d8f34267b998c4fa1b to your computer and use it in GitHub Desktop.
Merge Sort
let mergeSort = (arr) => {
if (arr.length < 2) {
console.log("Merging len 1: ", arr);
return arr;
}
console.log("Merging len > 1: ", arr)
let mid = parseInt(arr.length / 2),
l = arr.slice(0, mid),
r = arr.slice(mid);
console.log([mid, l, r]);
return merge(mergeSort(l), mergeSort(r));
}
let merge = (l, r) => {
let res = [];
while (l.length && r.length) {
l[0] <= r[0] ? res.push(l.shift()) : res.push(r.shift());
}
while (l.length) res.push(l.shift());
while (r.length) res.push(r.shift());
console.log("Merged: ", res);
return res;
}
input = [3,4,5,6,1,2];
console.log(input);
output = mergeSort(input);
console.log(output);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment