Skip to content

Instantly share code, notes, and snippets.

@jasondscott
Created January 17, 2016 06:14
Show Gist options
  • Save jasondscott/c2ba663c652752bbe9f1 to your computer and use it in GitHub Desktop.
Save jasondscott/c2ba663c652752bbe9f1 to your computer and use it in GitHub Desktop.
function mergeSort(arr) {
for (var n = 1; n < 4 ; n++){
var seg_size = Math.pow(2, n);
for (var seg = 0; seg < Math.ceil(arr.length/seg_size); seg++) {
var before = arr.slice(0, seg * seg_size);
var cur = arr.slice(seg * seg_size, (seg+1) * seg_size);
var after = arr.slice((seg+1) * seg_size);
var left = cur.slice(0, seg_size/2);
var right = cur.slice(seg_size/2);
var sorted = [];
while(left.length && right.length) {
if (left[0] < right[0]) {
sorted.push(left.shift(1));
} else {
sorted.push(right.shift(1));
}
}
if (left.length > 0) {
sorted = sorted.concat(left);
}
if (right.length > 0) {
sorted = sorted.concat(right);
}
arr = before.concat(sorted).concat(after);
}
}
return arr;
}
var toSort = [5,9,3,6,2,1,7];
console.log("init: " + toSort);
console.log("final: " + mergeSort(toSort));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment