Sorting algorithms/Merge sort: Difference between revisions
→{{header|JavaScript}}
Line 3,905:
=={{header|JavaScript}}==
<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 lang="javascript">function merge(left, right, arr) {
var a = 0;
Line 3,950 ⟶ 3,979:
while (ir < right.length)
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>
|