Skip to content

Instantly share code, notes, and snippets.

@renatoargh
Created July 24, 2012 16:05
Show Gist options
  • Save renatoargh/3170884 to your computer and use it in GitHub Desktop.
Save renatoargh/3170884 to your computer and use it in GitHub Desktop.
function merge(array, lower, half, upper){
var left = [], i = 0;
while (i < half - lower + 1){
left.push(array[lower + i++]);
}
left.push(Number.MAX_VALUE);
var right = [], j = 0;
while(j < upper - half){
right.push(array[half + j++ + 1]);
}
right.push(Number.MAX_VALUE);
i = j = 0;
for(k = lower; k <= upper; k++){
array[k] = left[i] < right[j] ? left[i++] : right[j++];
}
}
function mergeSort(array, lower, upper){
if(lower === undefined && upper === undefined){
lower = 0;
upper = array.length - 1;
}
if(lower < upper){
var half = Math.floor((lower + upper)/2);
mergeSort(array, lower, half);
mergeSort(array, half + 1, upper);
merge(array, lower, half, upper);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment