Merge Sort copy pasta
copy pasta from Cracking the Coding Interview but I'm just trying to visualize it
by Augustus Yuan
HTML
<div id="debug-output">
</div>
CSS
code {
display: block;
}
.inline {
display: inline;
}
JavaScript
function logOut(output, inline) {
var debugOutput = document.getElementById('debug-output');
var codeElement = document.createElement('code');
if (inline) codeElement.classList.add('inline');
codeElement.innerHTML = (output);
debugOutput.appendChild(codeElement);
}
function mergeSort(arr) {
var helper = [];
return mergeSortHelper(arr, [], 0, arr.length-1);
}
function mergeSortHelper(arr, helper, low, high, stringLvl) {
if (low < high) {
var mid = Math.floor((low + high)/ 2);
var leftSort = mergeSortHelper(arr, helper, low, mid);
var rightSort = mergeSortHelper(arr, helper, mid+1, high);
return merge(arr, helper, low, mid, high);
}
}
function merge(arr, helper, low, mid, high) {
for (var i=low; i <= high; i++) {
helper[i] = arr[i];
}
var helperLeft = low;
var helperRight = mid + 1;
var current = low; // start on the low and work out way up
while (helperLeft <= mid && helperRight <= high) {
if (helper[helperLeft] <= helper[helperRight]) {
arr[current] = helper[helperLeft];
helperLeft++;
} else {
arr[current] = helper[helperRight];
helperRight++;
}
current++;
}
var whatsLeft = mid - helperLeft;
for (var i=0; i<=whatsLeft; i++) {
arr[current+i] = helper[helperLeft+i];
}
logOut(arr);
return arr;
}
logOut(mergeSort([4,13,3,2,6,7,8]));