Sorting algorithms/Merge sort: Difference between revisions

Content added Content deleted
Line 3,950: Line 3,950:
while (ir < right.length)
while (ir < right.length)
a[ia++] = right[ir++]
a[ia++] = right[ir++]
}
</syntaxhighlight>

<syntaxhighlight lang="javascript">
function mergeSort(v) {
if (v.length <= 1) {
return v;
}

let m = Math.floor(v.length / 2);
let l = mergeSort(v.slice(0, m));
let r = mergeSort(v.slice(m, v.length));
return merge(l, r);

function merge(a, b) {
let i = 0, j = 0;
let n = a.length + b.length;
let c = [];
while (c.length < n) {
if (i < a.length && (j >= b.length || a[i] < b[j])) {
c.push(a[i]);
i++;
} else {
c.push(b[j]);
j++;
}
}
return c;
}
}
}
</syntaxhighlight>
</syntaxhighlight>