之前面试时遇到过的一道面试题,简单方式可以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);
网友评论