Skip to content

Instantly share code, notes, and snippets.

@4skinSkywalker
Created April 23, 2019 08:15
Show Gist options
  • Select an option

  • Save 4skinSkywalker/c64da9c95e691742d1933e38605c8477 to your computer and use it in GitHub Desktop.

Select an option

Save 4skinSkywalker/c64da9c95e691742d1933e38605c8477 to your computer and use it in GitHub Desktop.
function mergeSort(array) {
for (var b = 1; b < array.length; b *= 2) {
let a = []
for (var i = 0; i < array.length; i += 2 * b) {
a = a.concat(
merger(
array.slice(i, i + b),
array.slice(i + b, i + 2 * b)
)
)
}
array = a
}
return array
}
function merger(a1, a2) {
let l = 0
let r = 0
let merged = []
while (l < a1.length && r < a2.length) {
if (a1[l] <= a2[r]) {
merged.push(a1[l++])
} else {
merged.push(a2[r++])
}
}
while (l < a1.length) {
merged.push(a1[l++])
}
while (r < a2.length) {
merged.push(a2[r++])
}
return merged
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment