直接上代码
/*
A,B有序数组可为空
m,n 对应数组的个数
*/
function merge( A, m, B, n ) {
let i = 0;
let j = 0;
while(j<n){
if(B[j]>A[i]) {
i++
} else {
A.splice(i++,0,B[j++])
}
}
}
我们可以来分析一下,为什么这样做可以的出结果。
定义了2个变量,然后从数组最小值的开始遍历
不断的拿B的其中一个值和A的所有值比较,然后判断,如果B大于A,比较下一个A
如果不是,把A中的第i个替换成B,然后进行继续比较(splice中,++最后才执行了)。
当A为空时,直接把B放到A中,当B为空时,是会直接返回A
第二次比较是从插入B后的节点开始的,而不是重新开始比较,这样也节省了时间
本人前端入门小白一个,最近喜欢上看算法题,如有错误,请指出