Merge Sort
3
2
9
4
1
8
Code:
function mergeSort(array) {
let splitedArrays = []
for(let item of array) {
let newItem = [];
splitedArrays.push(newItem)
newItem.push(item)
}
while (splittedArrays.length > 1) {
let arr= []
for (let i = 0; i < splittedArrays.length; i += 2) {
arr.push(merge(splittedArrays[i + 1], splittedArrays[i]))
}
if (arrays.length % 2 !== 0) {
result.push(arrays[arrays.length - 1])
}
splittedArrays = arr
}
const [result] = splittedArrays
return result;
}
function merge(left = [], right = []) {
const result = [];
let leftPointer = 0;
let rightPointer = 0;
while (leftPointer < left.length && rightPointer < right.length) {
if (left[leftPointer] < right[rightPointer]) {
result.push(left[leftPointer]);
leftPointer++;
} else {
result.push(right[rightPointer]);
rightPointer++;
}
}
while (leftPointer < left.length) {
result.push(left[leftPointer]);
leftPointer++;
}
while (rightPointer < right.length) {
result.push(right[rightPointer]);
rightPointer++;
}
return result;
};