分享一个数组排序!

229 阅读1分钟

处理两个已经排好序的数组,返回一个排好序的数组!

思路:利用两个数组已经排序好的特点!顺序比较两个数组的元素,记录下下标。比较出结果了,存入新数组,并且将他对应的下标加1。直到两个数组的元素都比完

示例:var arr1 = [1,3,6,8,15];

          var arr2 = [4,5,11,14,25];

返回:[1,3,4,5,6,8,11,14,15,25]

function fn(arr1, arr2) {
     let a = [],
         arr1Index = 0,
         arr2Index = 0;
     while (arr1Index < arr1.length || arr2Index < arr2.length) {
         if (arr1Index >= arr1.length) {
            a.push(...arr2.slice(arr2Index));
            break;
         }
         if (arr2Index >= arr2.length) {
            a.push(...arr1.slice(arr1Index));
            break;
         }
         if (arr1[arr1Index] < arr2[arr2Index]) {
            a.push(arr1[arr1Index++]);
          } else {
            a.push(arr2[arr2Index++]);
          }
        }
     return a;
};


另一个方法

arr1.concat(arr2).sort((arr1,arr2)=>arr1-arr2)

ps:写的不好的地方,大家指点!