合并两个有序数组(es6)

105 阅读1分钟

测试用例

const a = [1, 2, 3, 9]
const b = [3, 4, 5, 6, 54, 66, 77]

输出结果

[1, 2, 3, 3, 4, 5, 6, 9, 54, 66, 77]

创建新数组版题解

const merge = (a, b) => {
        const result = []
        const [array1, array2] = a.length < b.length ? [a, b] : [b, a]
        let indexA = 0, indexB = 0
        while (indexA < array1.length) {
            if (array1[indexA] < array2[indexB]) {
                result.push(array1[indexA])
                indexA++
            } else {
                result.push(array2[indexB])
                indexB++
            }
        }
        for (let index = indexB; index < array2.length; index++) {
            result.push(array2[index])
        }
        return result
    }