美文网首页程序员
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