js合并两个有序升序的整数数组A和B变成一个新的数组。新数组也要有序。
时间: 2023-05-19 12:02:04 浏览: 74
可以使用双指针的方法,分别从数组A和数组B的开头开始比较,将较小的数放入新数组中,直到其中一个数组遍历完毕,然后将另一个数组中剩余的数依次放入新数组中即可。具体实现如下:
function mergeSortedArrays(A, B) {
let i = 0, j = 0;
const result = [];
while (i < A.length && j < B.length) {
if (A[i] < B[j]) {
result.push(A[i]);
i++;
} else {
result.push(B[j]);
j++;
}
}
while (i < A.length) {
result.push(A[i]);
i++;
}
while (j < B.length) {
result.push(B[j]);
j++;
}
return result;
}
const A = [1, 3, 5, 7];
const B = [2, 4, 6, 8];
const C = mergeSortedArrays(A, B);
console.log(C); // [1, 2, 3, 4, 5, 6, 7, 8]
相关问题
js怎么把两个有序数组合并成一个有序数组
可以使用归并排序的思想,将两个有序数组合并成一个有序数组。具体做法是创建一个新的数组,依次比较两个有序数组的元素大小,将较小的元素放入新数组中,直到其中一个数组遍历完毕,然后将另一个数组中剩余的元素放入新数组中。下面是一个示例代码:
```javascript
function mergeSortedArray(arr1, arr2) {
let i = 0, j = 0;
const mergedArr = [];
while (i < arr1.length && j < arr2.length) {
if (arr1[i] <= arr2[j]) {
mergedArr.push(arr1[i]);
i++;
} else {
mergedArr.push(arr2[j]);
j++;
}
}
if (i < arr1.length) {
mergedArr.push(...arr1.slice(i));
}
if (j < arr2.length) {
mergedArr.push(...arr2.slice(j));
}
return mergedArr;
}
```
这个函数接受两个有序数组 `arr1` 和 `arr2`,返回合并后的有序数组。其中使用了 `while` 循环和两个指针 `i` 和 `j` 遍历两个数组,使用 `if` 条件判断比较大小,将较小的元素放入新数组中。最后使用 `slice` 函数将剩余的元素放入新数组中。
js合并两个升序数组
以下是两种JavaScript合并两个升序数组的方法:
1. 使用concat()和sort()方法合并并排序数组:
```javascript
function merge(arr, arr1) {
if (!Array.isArray(arr) || !Array.isArray(arr1)) {
return [];
}
const data = arr.concat(arr1);
data.sort((a, b) => a - b);
return data;
}
```
2. 使用双指针法合并并排序数组:
```javascript
function merge(arr, arr1) {
if (!Array.isArray(arr) || !Array.isArray(arr1)) {
return [];
}
let i = 0;
let j = 0;
const merged = [];
while (i < arr.length && j < arr1.length) {
if (arr[i] < arr1[j]) {
merged.push(arr[i]);
i++;
} else if (arr[i] > arr1[j]) {
merged.push(arr1[j]);
j++;
} else {
merged.push(arr[i]);
merged.push(arr1[j]);
i++;
j++;
}
}
while (i < arr.length) {
merged.push(arr[i]);
i++;
}
while (j < arr1.length) {
merged.push(arr1[j]);
j++;
}
return merged;
}
```
阅读全文