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> |