Skip to content

Instantly share code, notes, and snippets.

@zhiyelee
Last active December 18, 2015 10:49
Show Gist options
  • Save zhiyelee/5770896 to your computer and use it in GitHub Desktop.
Save zhiyelee/5770896 to your computer and use it in GitHub Desktop.
/**
* merge sort
**/
var arr = [8,7,9,30,13,8,99,124, 5];
//var arr = [1,10,9];
var newArr = [];
var ii = 0;
function mergeSort(arr, left, right) {
var resultArr = [];
var len = right -left;
if (len === 0) resultArr.push(arr[left]);
if (len > 0) {
var mid = Math.floor(len/2, 10) + left;
var leftArr = mergeSort(arr, left, mid);
var rightArr = mergeSort(arr, mid + 1, right);
resultArr = mergeLR(leftArr, rightArr);
}
return resultArr;
}
function mergeLR(larr, rarr) {
var result = [];
var i = 0, j = 0;
var llen = larr.length;
var rlen = rarr.length;
while (i < llen && j < rlen) {
if (larr[i] <= rarr[j]) {
result.push(larr[i]);
i++;
} else {
result.push(rarr[j]);
j++;
}
}
if (i >= llen) {
result = result.concat(rarr.slice(j));
} else {
result = result.concat(larr.slice(i));
}
return result;
}
console.info(mergeSort(arr, 0, arr.length - 1));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment