Skip to content

Instantly share code, notes, and snippets.

@galenweber
Created April 24, 2016 21:48
Show Gist options
  • Save galenweber/393fbb914fc4609e62334adee8734a51 to your computer and use it in GitHub Desktop.
Save galenweber/393fbb914fc4609e62334adee8734a51 to your computer and use it in GitHub Desktop.
var mergeSort = function(array) {
array = genArray(array);
return sort(array);
}
var merge = function(arrayOne, arrayTwo) {
var resultArray = [];
var jPointer = 0;
for (var i=0; i < arrayOne.length; i ++) {
for (var j=jPointer; j < arrayTwo.length && arrayTwo[j] < arrayOne[i]; j++) {
resultArray.push(arrayTwo[j]);
}
resultArray.push(arrayOne[i]);
jPointer = j;
}
return resultArray;
}
var sort = function(array) {
if (typeof array[0][0] === "number") {
// console.log("we have reached the final stage: ", array);
return merge(array[0],array[1]);
} else {
console.log("we have reached the second to last stage: ", array);
return merge(sort(array[0]), sort(array[1]))
}
}
var genArray = function(array) {
if (array.length > 1) {
return [genArray(array.slice(0, array.length/2)), genArray(array.slice(array.length/2))]
} else {
return array
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment