Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试合并两个数组,同时排序到第三个数组_Javascript_Arrays - Fatal编程技术网

Javascript 尝试合并两个数组,同时排序到第三个数组

Javascript 尝试合并两个数组,同时排序到第三个数组,javascript,arrays,Javascript,Arrays,我有一个家庭作业,基本上是两个数组,它们必须被分成一个数组。这有一个警告,不合并然后排序。换句话说,我必须同时遍历这两个数组,然后从中生成第三个数组,它被排序。我有点困惑,为什么可以同时搜索两个数组,然后寻找最小值并将其移动到第三个数组 有人能给我举个这样的例子吗?我被它弄糊涂了 谢谢大家 以下是一些细节 •调用函数时不应更改两个参数数组。总的来说,这是一个很好的做法。 •您不能简单地附加两个数组,然后对结果进行排序。相反,您应该依次检查数组的每个元素,看看哪个元素更小。 •返回包含正确内容的新

我有一个家庭作业,基本上是两个数组,它们必须被分成一个数组。这有一个警告,不合并然后排序。换句话说,我必须同时遍历这两个数组,然后从中生成第三个数组,它被排序。我有点困惑,为什么可以同时搜索两个数组,然后寻找最小值并将其移动到第三个数组

有人能给我举个这样的例子吗?我被它弄糊涂了

谢谢大家

以下是一些细节

•调用函数时不应更改两个参数数组。总的来说,这是一个很好的做法。 •您不能简单地附加两个数组,然后对结果进行排序。相反,您应该依次检查数组的每个元素,看看哪个元素更小。 •返回包含正确内容的新创建数组。 •执行算法的时间应与两个输入数组中的元素数量之和成正比

是的,数组是被排序的,但我必须遍历并找到两个数组中的最低值,然后将其添加到第三个数组中,然后是两个数组中的第二个最低值,然后继续……


然后使用.sort()方法,我不明白您所说的必须同时检查这两个数组是什么意思。

如果这两个数组已经排序,并且您将它们排序为空数组, 没有比最简单的方法更快的了-

function insorter(A, B){
    var C= [], LA= A.length, LB= B.length, i= 0, j= 0, k= 0;
    while(i<LA && j<LB){
        while(A[i]<B[j]){
            C[k++]= A[i++];
        }
        while(B[j]<= A[i]){
            C[k++]= B[j++];
        }
    }
    if(i<LA) C.splice(k, 0,A.slice(i));
    else if(j<LB) C.splice(k, 0,B.slice(j));
    return C;
}


var a= [10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49], 
b= [0, 3.5, 7, 10.5, 14, 17.5, 21, 24.5, 28, 31.5, 35, 38.5];
insorter(a, b);
功能插入器(A、B){
变量C=[],LA=A.length,LB=B.length,i=0,j=0,k=0;

while(我两个数组都已经排序了吗?两个输入数组都已经排序了吗?问题很简单,请参见更新的问题。这通常可能是一个好方法,但这里特别禁止。是的,我同意,但数组排序的事实刚刚公布