Skip to content

Instantly share code, notes, and snippets.

@jremmen
Created July 4, 2013 00:11
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 jremmen/5923940 to your computer and use it in GitHub Desktop.
Save jremmen/5923940 to your computer and use it in GitHub Desktop.
js: merge sort
function mergesort(list) {
if(list.length <= 1) return list;
var l = mergesort(list.slice(0, list.length / 2));
var r = mergesort(list.slice(list.length / 2));
return merge(l, r);
}
function merge(l, r) {
var result = [];
while(l.length > 0 || r.length > 0) {
if(l.length > 0 && r.length > 0) {
if(l[0] <= r[0]) {
result.push(l.shift());
} else {
result.push(r.shift());
}
}
else if(l.length > 0) result.push(l.shift());
else if(r.length > 0) result.push(r.shift());
}
return result;
}
mergesort([4, 2, 3, 1]); // [1, 2, 3, 4]
mergesort([5, 1, 3, 4, 2]); // [1, 2, 3, 4, 5]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment