MergeSort without concat
by dpnminh
HTML
<div>
<button onclick="mergeSortPerform()">
Sort now
</button>
</div>
JavaScript
function MergeSort(A, start, end){
if (start >= end) return;
var middle = Math.floor((start + end) / 2);
MergeSort(A, start, middle);
MergeSort(A, middle + 1, end);
Merge(A, start, middle, end);
}
function Merge(A, start, middle, end){
var leftArr = [], rightArr = [], leftIndex = 0, rightIndex = 0, i = start;
leftArr = A.slice(start, middle + 1);
rightArr = A.slice(middle + 1, end + 1);
while (leftIndex <leftArr.length && rightIndex < rightArr.length && i < end + 1){
if (leftArr[leftIndex] < rightArr[rightIndex]){
A[i] = leftArr[leftIndex];
leftIndex++;
}
else{
A[i] = rightArr[rightIndex];
rightIndex++;
}
i++;
}
while (leftIndex <leftArr.length){
A[i] = leftArr[leftIndex];
leftIndex++;
i++;
}
while (rightIndex < rightArr.length){
A[i] = rightArr[rightIndex];
rightArr++;
i++;
}
}
function mergeSortPerform(){
var arr = Array.from({length: 10000}, () => Math.floor(Math.random() * 40));
console.log('before - ', arr);
MergeSort(arr, 0, arr.length - 1);
console.log('after - ', arr);
}