Skip to content

Instantly share code, notes, and snippets.

@woonketwong
Last active August 29, 2015 13:56
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 woonketwong/8797844 to your computer and use it in GitHub Desktop.
Save woonketwong/8797844 to your computer and use it in GitHub Desktop.
Merge sort
function mergeSort(array, start, end){
if (start === end) return [array[start]];
var mid = Math.floor( (start + end) / 2 );
var arr1 = mergeSort(array, start, mid);
var arr2 = mergeSort(array, mid+1, end);
var result = merge(arr1, arr2);
return result;
}
function merge(arr1, arr2){
var result = [];
var ptr1 = 0;
var ptr2 = 0;
while( (ptr1 < arr1.length) && (ptr2 < arr2.length) ){
if (arr1[ptr1] < arr2[ptr2]){
result.push(arr1[ptr1]);
ptr1++;
} else if (arr1[ptr1] > arr2[ptr2]){
result.push(arr2[ptr2]);
ptr2++;
} else {
result.push(arr1[ptr1]);
result.push(arr2[ptr2]);
ptr1++;
ptr2++;
}
}
console.log(arr1, arr2);
result = result.concat(arr1.slice(ptr1).concat(arr2.slice(ptr2)));
console.log("result:", result);
return result;
}
// var array = [10,9,8,7,6,5,4,3,2,1];
// console.log(mergeSort(array, 0, array.length-1));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment