开发者问题收集

尝试在 Javascript 中合并两个未排序的数组

2021-04-08
447

我在 javascript 中编写了代码,尝试通过提供两个 sortedarray 输入来返回单个排序数组。

function finalArray(arr1, arr2) {
  const mergedArray = [];
  if (arr1.length === 0) {
    return arr2;
  }
  if (arr2.length === 0) {
    return arr1;
  }
  let arr1Item = arr1[0];
  let arr2Item = arr2[0];
  let i = 1;
  let j = 1;

  while (arr1Item || arr2Item) {
    if (arr2Item === undefined || arr1Item < arr2Item) {
      mergedArray.push(arr1Item);
      arr1Item = arr1[i];
      i++;
    } else {
      mergedArray.push(arr2Item);
      arr2Item = arr2[j];
      j++;
    }
  }
  return mergedArray
}

console.log(finalArray([2, 6, 4, 10], [15, 1, 5, 33]));

有人能帮忙合并未排序数组吗?

2个回答

先合并两个数组,然后进行排序?

const arr1 = [2, 6, 4, 10];
const arr2 = [10, 1, 5, 33];
const newArray = ([...arr1, ...arr2]);
newArray.sort(function(a,b){return a - b});
console.log(newArray);

预期输出:[1, 2, 4, 5, 6, 10, 10, 33]

pixelcreated
2021-04-09

问题是你正在比较每两对数据并推送较小的一个。 首先尝试对每个子数组进行排序,而不进入比较过程进行混合。 子数组排序后,再相互比较。

Sadegh Sazmand
2021-04-08