Interview question: javascript implement merge sort
1 min readSep 12, 2021
mergeSort.js
/**
* From: https://leetcode.com/problems/sort-an-array/
* Question: merge sort
*/
var sortArray = (nums) => {
var mergeSort = (left, right) => {
if (left >= right) {
return [nums[right]]
} var mid = Math.floor((left + right) * 1.0 / 2)
var leftArr = mergeSort(left, mid)
var rightArr = mergeSort(mid + 1, right)
var arr = []
var i = 0
var j = 0
while (true) {
if (leftArr[i] < rightArr[j]) {
arr.push(leftArr[i])
i++
} else {
arr.push(rightArr[j])
j++
} if (i >= leftArr.length) {
arr = arr.concat(rightArr.slice(j))
break
} if (j >= rightArr.length) {
arr = arr.concat(leftArr.slice(i))
break
}
}
return arr
}
return mergeSort(0, nums.length - 1)
}var {assertSort} = require("./sortHelper")
var asrSort = (nums) => {
assertSort(sortArray, nums)
}describe("sort", () => {
it("1", () => {
asrSort([3, 1, 2])
})
})
If you like my article, donate me a coffee and let me continue