Skip to content

Instantly share code, notes, and snippets.

@cho45
Created August 26, 2008 16:13
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 cho45/7287 to your computer and use it in GitHub Desktop.
Save cho45/7287 to your computer and use it in GitHub Desktop.
#!js
Object.prototype.p = function () {
print(uneval(this));
return this;
};
function merge (a, b) {
var ret = new Array(a.length + b.length);
a = a.concat(Infinity); // clone the array and append sentry
b = b.concat(Infinity);
for (var i = 0, len = ret.length; i < len; i++) {
ret[i] = (a[0] < b[0]) ? a.shift() : b.shift();
}
return ret;
}
//function merge_sort (list) {
// var a = list.slice(0, list.length / 2);
// var b = list.slice(list.length / 2);
// ({a:a, b:b}).p();
// if (list.length > 2) {
// return merge(merge_sort(a), merge_sort(b))
// } else {
// return merge(a, b);
// }
//}
function merge_sort (list, begin, end) {
[begin, end, list.slice(begin, end + 1)].p();
if (end - begin > 0) {
var middle = Math.floor((begin + end + 1) / 2);
return merge(merge_sort(list, begin, middle - 1), merge_sort(list, middle, end))
} else {
return [ list[begin] ];
}
}
var list = [1, 7, 9, 4, 3, 2, 6, 5, 8];
merge_sort(list, 0, list.length - 1).p();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment