how to merge two sorted array in one sorted array in JavaScript without using sort()

后端 未结 24 1160
我寻月下人不归
我寻月下人不归 2021-01-18 13:57

In this program merged two array and then sorted using temp.but this not correct method.because two array are sorted ,so method should be unique i.e. merging of two sorted i

24条回答
  •  春和景丽
    2021-01-18 14:27

    Merging two sorted arrays.

    function merge(a, b) {
      let i = a.length - 1;
      let j = b.length - 1;
      let k = i + j + 1; //(a.length + b.length - 1) == (i + j + 2 - 1) == (i + j + 1)
    
      while (k >= 0) {
        if (a[i] > b[j] || j < 0) {
          a[k] = a[i];
          i--;
        } else {
          a[k] = b[j];
          j--;
        }
        k--;
      }
      return a;
    }
    
    console.log(merge([1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21], [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]));

    More compact code:

    function merge(a, b) {
      let i = a.length - 1;
      let j = b.length - 1;
      let k = i + j + 1; //(a.length + b.length - 1) == (i + j + 2 - 1) == (i + j + 1)
    
      while (k >= 0) {
        a[k--] = (a[i] > b[j] || j < 0) ? a[i--] : b[j--];
      }
      return a;
    }
    
    console.log(merge([1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21], [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]));

提交回复
热议问题