Skip to content

Instantly share code, notes, and snippets.

@JohnKeysCloud
Last active June 17, 2024 05:13
Show Gist options
  • Save JohnKeysCloud/5555aa2b3c716168873256957a32e795 to your computer and use it in GitHub Desktop.
Save JohnKeysCloud/5555aa2b3c716168873256957a32e795 to your computer and use it in GitHub Desktop.
My Merge-Sort Implementation
const testArray1 = [3, 2, 1, 13, 8, 5, 0, 1];
const testArray2 = [105, 79, 100, 110, 3];
function merge(leftHalfOfArray, rightHalfOfArray) {
let mergedArray = [];
let leftHalfPointer = 0;
let rightHalfPointer = 0;
let mergedPointer = 0;
while (
leftHalfPointer < leftHalfOfArray.length &&
rightHalfPointer < rightHalfOfArray.length
) {
if (leftHalfOfArray[leftHalfPointer] < rightHalfOfArray[rightHalfPointer]) {
mergedArray[mergedPointer++] = leftHalfOfArray[leftHalfPointer++];
} else {
mergedArray[mergedPointer++] = rightHalfOfArray[rightHalfPointer++];
}
}
for (leftHalfPointer; leftHalfPointer < leftHalfOfArray.length; leftHalfPointer++) {
mergedArray[mergedPointer++] = leftHalfOfArray[leftHalfPointer];
}
for (rightHalfPointer; rightHalfPointer < rightHalfOfArray.length; rightHalfPointer++) {
mergedArray[mergedPointer++] = rightHalfOfArray[rightHalfPointer];
}
return mergedArray;
}
function mergeSort(array) {
if (array.length < 2) {
return array;
}
let arrayLength = array.length;
let middleIndex = Math.floor(arrayLength / 2);
let nextLeftHalfOfArray = mergeSort(array.slice(0, middleIndex));
let nextRightHalfOfArray = mergeSort(array.slice(middleIndex));
return merge(nextLeftHalfOfArray, nextRightHalfOfArray);
}
console.log(mergeSort(testArray1));
console.log(mergeSort(testArray2));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment