Skip to content

Instantly share code, notes, and snippets.

@xypaul
Last active August 29, 2015 14:22
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 xypaul/32bf7dd87209c06c45d7 to your computer and use it in GitHub Desktop.
Save xypaul/32bf7dd87209c06c45d7 to your computer and use it in GitHub Desktop.
Improved Merge Sort JavaScript - http://jsbin.com/wiyaja
function sort(array) {
var len = array.length;
if (len <= 1) {
return array;
}
var middle = Math.floor(len*0.5);
var left = array.slice(0,middle);
var right = array.slice(middle, len);
return merge(sort(left), sort(right));
}
function merge(left, right) {
var lenL = left.length;
var lenR = right.length;
var total = lenL + lenR;
var l = 0;
var r = 0;
var temp = new Array(parseInt(total));
while ((l+r) < total) {
var el;
if (l >= lenL) {
el = right[r];
r++;
} else if (r >= lenR) {
el = left[l];
l++;
} else {
if (left[l] > right[r]) {
el = left[l];
l++;
} else {
el = right[r];
r++;
}
}
temp[r+l-1] = el;
}
return temp;
}
var array = [];
for(var i = 0; i < 50; i++) {
array.push(Math.round(Math.random() * 100));
}
console.log(array);
console.log(sort(array));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment