mergeSort
JavaScript
counter =0;
const merge = (a, b) => {
counter +=1;
if (!a.length) return b;
if (!b.length) return a;
if (a[0] < b[0]) {
return [a[0], ...merge(a.slice(1, a.length), b)];
}
else {
return [b[0], ...merge(a, b.slice(1, b.length))];
}
}
const mergeSort = (a) => {
if (a.length === 1) return a;
const middle = Math.floor(a.length/2);
const left = a.slice(0, middle);
const right = a.slice(middle, a.length);
return merge(mergeSort(left), mergeSort(right));
}
console.log(mergeSort([38, 27, 43, 3, 9, 82, 10]));
console.log(counter);