let sortArr = (arr1, arr2) => {
let [i,j] = [0,0];
let newArr = [];
while (i < arr1.length && j < arr2.length) {
if (arr1[i] < arr2[j]) {
newArr.push(arr1[i]);
i++;
} else if (arr1[i] > arr2[j]) {
newArr.push(arr2[j]);
j++;
} else if (arr1[i] === arr2[j]) {
newArr.push(arr1[i]);
newArr.push(arr2[j]);
i++, j++;
}
}
// 将指针未移到末尾的部分取出,拼到新数组后面
if (i < arr1.length) {
return newArr.concat(arr1.splice(i));
} else if (j < arr2.length) {
return newArr.concat(arr2.splice(j));
} else {
return newArr;
}
};
let arr1 = [1, 2, 3, 4];
let arr2 = [2, 4, 6, 8, 12, 19, 33, 45];
console.log(sortArr(arr1, arr2));
//[ 1, 2, 2, 3, 4, 4, 6, 8, 9, 11, 12, 19, 33, 45 ]
对两个有序数组,合并后并且升序排列
最新推荐文章于 2022-05-28 22:04:53 发布