美文网首页程序员
js 对两个有序数组进行合并排序

js 对两个有序数组进行合并排序

作者: 臣以君纲 | 来源:发表于2019-02-05 20:41 被阅读11次

    之前面试时遇到过的一道面试题,简单方式可以concat后快排,时间复杂度O(nlog2n),当然有序数组的条件不能拜拜浪费,下面代码是两个数组两个移动指针的解法

    function sort1(a,b){
        var i=0,j=0,k=0;
        var result=[]
        while(i<a.length&&j<b.length){
            if(a[i]<b[j]){
                result[k++]=a[i++];
            }
            else{
                result[k++]=b[j++];
            }
        }
        while(i<a.length){
            result[k++]=a[i++];
        }
        while(j<b.length){
            result[k++]=b[j++]
        }
        return result
    };
    

    基本思路是,两个指针都指向数组第一个元素,,对比两个数值,如果a 小,就把a的值赋值给最终数组,然后指针向后移一位,如果b小,将b的值赋值给最终数组,b数组指针向后移一位,如果某个数组指针已经到头,那么另外一个数组剩下的值直接复制到最终数组,,代码中以数组下标代替指针。。时间复杂度O(m+n);

    相关文章

      网友评论

        本文标题:js 对两个有序数组进行合并排序

        本文链接:https://www.haomeiwen.com/subject/hpevsqtx.html