两个有序数组合成一个有序数组

有两个数组

var arr1 = [1,2,4,6,8]
var arr2 = [3,3,5,6]
合并成 [1,2,3,3,4,5,6,6,8]
 
思路: 因为两个都是有序数组,所以从两个数组的最后一项开始依次向前做比较
 
方法1:
    newArrFun(arr1,arr1.length,arr2,arr2.length)
    function newArrFun(arr1,n,arr2,m) {
        var len1 = n-1
        var len2 = m-1
        var len = m+n
        var arr = []
        for(var i = len-1; i>=0 ; i--) {
            if(len2 < 0 || len1 < 0) {
                arr[i] = len2 < 0 ? arr1[len1--] : arr2[len2--]
            }else {
                arr[i] = arr1[len1] > arr2[len2] ? arr1[len1--] : arr2[len2--]
            }
        }
        console.log('arr:',arr)
     return arr }

方法2:

    newArrFun1(arr1,arr1.length,arr2,arr2.length)

    function newArrFun1(nums1, m, nums2, n) {
        let len1 = m - 1,
        len2 = n - 1,
        len = m + n - 1
        while(len2 >= 0) {
            if(len1 < 0) {
                nums1[len--] = nums2[len2--]

                continue
            }
            nums1[len--] = nums1[len1] >= nums2[len2] ? nums1[len1--]:nums2[len2--]

        }
    }

 

posted @ 2021-05-26 14:40  pyx204  阅读(395)  评论(0)    收藏  举报