Skip to content

Instantly share code, notes, and snippets.

@venil7
Created April 28, 2015 11:33
Show Gist options
  • Save venil7/72c8cbf377395b185564 to your computer and use it in GitHub Desktop.
Save venil7/72c8cbf377395b185564 to your computer and use it in GitHub Desktop.
merge sort
var array = [1, 7, 5, 9, 0, 4, 12, -56, 7, 0, -45, 8, 2, 3, 6, 7, 8, 1, 5, 0,1, 7, 5, 9, 0, 4, 12, -56, 7, 0, -45, 8, 2, 3, 6, 7, 8, 1, 5, 0,1, 7, 5, 9, 0, 4, 12, -56, 7, 0, -45, 8, 2, 3, 6, 7, 8, 1, 5, 0,1, 7, 5, 9, 0, 4, 12, -56, 7, 0, -45, 8, 2, 3, 6, 7, 8, 1, 5, 0,1, 7, 5, 9, 0, 4, 12, -56, 7, 0, -45, 8, 2, 3, 6, 7, 8, 1, 5, 0,1, 7, 5, 9, 0, 4, 12, -56, 7, 0, -45, 8, 2, 3, 6, 7, 8, 1, 5, 0,1, 7, 5, 9, 0, 4, 12, -56, 7, 0, -45, 8, 2, 3, 6, 7, 8, 1, 5, 0];
var merge = function(left, right) {
var ret = [];
var length = left.length>right.length? left.length : right.length;
while(!!left.length || !!right.length) {
var l = left[0];
var r = right[0];
if (l === undefined || l > r) { ret.push(right.shift()); continue;}
if (r === undefined || r >= l) { ret.push(left.shift()); continue;}
}
return ret;
};
var merge_sort = function (unsorted) {
if (unsorted.length === 1) {
return unsorted;
}
var half = Math.floor(unsorted.length/2);
var left = unsorted.slice(0, half);
var right = unsorted.slice(half);
var sorted_left = merge_sort(left);
var sorted_right = merge_sort(right);
return merge(sorted_left, sorted_right);
};
var sorted = merge_sort(array);
console.log(sorted);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment