I am try to do a simple merge sort with JavaScript in Vue.Js. These are the functions I created. But the output can't sort the array ascendingly.
mergeSort(arr) {
if (arr.length <= 1) {
this.data.arrNum = arr;
}
console.log("arr", arr);
let mid = Math.floor(arr.length / 2);
let left = arr.slice(0, mid);
console.log("left", left);
let right = arr.slice(mid);
console.log("right", right);
this.merge(left, right);
},
merge: function (left, right) {
var leftIndex = 0;
var rightIndex = 0;
var results = [];
while (leftIndex < left.length && rightIndex < right.length) {
if (left[leftIndex] < right[rightIndex]) {
results.push(left[leftIndex]);
leftIndex++
} else {
results.push(right[rightIndex]);
rightIndex++;
}
}
results = results
.concat(left.slice(leftIndex))
.concat(right.slice(rightIndex));
this.data.arrNum = results;
},
}
};
Sample Original Array Before sorted Output After sorted