Skip to content

Instantly share code, notes, and snippets.

@anbnyc
Created January 14, 2017 01:51
Show Gist options
  • Save anbnyc/259aabee182f2af0bae3885c5a784e6c to your computer and use it in GitHub Desktop.
Save anbnyc/259aabee182f2af0bae3885c5a784e6c to your computer and use it in GitHub Desktop.
Merge Sort Implementation
// following Khan Academy's structure
// https://www.khanacademy.org/computing/computer-science/algorithms/merge-sort/a/overview-of-merge-sort
function mergeSort(array,p,r){
if(p < r){
var q = Math.floor((p + r)/2);
mergeSort(array, p, q);
mergeSort(array, q+1, r);
merge(array, p, q, r);
}
}
var merge = function(array, p, q, r) {
var lowHalf = [];
var highHalf = [];
var k = p;
var i;
var j;
for (i = 0; k <= q; i++, k++) {
lowHalf[i] = array[k];
}
for (j = 0; k <= r; j++, k++) {
highHalf[j] = array[k];
}
k = p;
i = 0;
j = 0;
while (i < lowHalf.length && j < highHalf.length) {
if (lowHalf[i] < highHalf[j]) {
array[k] = lowHalf[i];
i += 1;
} else {
array[k] = highHalf[j];
j += 1;
}
k += 1;
}
while (i < lowHalf.length) {
array[k] = lowHalf[i];
k += 1;
i += 1;
}
while (j < highHalf.length) {
array[k] = highHalf[j];
k += 1;
j += 1;
}
};
var array = [-5, 15, -10, 0, 25, 5, 1, 2];
mergeSort(array, 0, array.length-1);
console.log("Array after sorting: " + array);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment