孃口三三 2017-08-19 16:18 采纳率: 0%
浏览 821

排序问题!求解答(js)

题目为:将两个已知的,已经排好序的升序数组arr1和arr2,整合为一个仍未升序的新数组arr3,时间复杂度最小的办法是什么?
例:arr1 = [2,4,7,13], a2 = [1,3,5,6,7,9],
得到:arr3 = [1,2,3,4,5,6,7,7,9,13]

我想到的方法如下:

    var a1 = [2,4,7,13], a2 = [1,3,5,6,7,9];

    function sortAB(a1, a2) {
        var i = 0,
            j = 0,
            a3 = [];
        var length = a1.length + a2.length;
        for(let k=0; k<length; k++){
            if(a1[i] < a2[j]) {
                a3.push(a1[i]);
                i++;
            } else {
                a3.push(a2[j]);
                j++;
            }
        }
        return a3;
    }

    console.log(sortAB(a1, a2));

但得出的结果却是 [1,2,3,4,5,6,7,7,9,undefined]

求问原因何在???如何解决???

  • 写回答

8条回答 默认 最新

  • Go 旅城通票 2017-08-20 02:49
    关注

    应为你13大于a2中所有元素,所有还是执行else,但是j++大于数组长度导致压入了undefined,并且a1的最大值没有压入,要做个判断是否已经越界

    
        var a1 = [2, 4, 7, 13], a2 = [1, 3, 5, 6, 7, 9];
    
        function sortAB(a1, a2) {
            var i = 0,
                j = 0,
                a3 = [];
            var a1l=a1.length,a2l=a2.length
            var length = a1l + a2l;
            for (let k = 0; k < length; k++) {
                if (a1[i] < a2[j]) {
                    if (i < a1l) {
                        a3.push(a1[i]);
                        i++;
                    } else {//压入b中所有剩余元素
                        for (var l = j; l < a2l; l++) a3.push(a2[l]);
                        break;
                    }
                } else {
                    if (j < a2l) {
                        a3.push(a2[j]);
                        j++;
                    }
                    else {//压入a中所有剩余元素
    
                        for (var l = i; l < a1l; l++) a3.push(a1[l]);
                        break
                    }
                }
            }
            return a3;
        }
    
        console.log(sortAB(a1, a2));
    
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题