2014-03-28 53 views
0

我有一个家庭作业,实质上是两个数组必须被分类到一个。这有一个不合并然后排序的警告。换句话说,我必须同时通过这两个数组,然后再从中排序第三个数组。对于如何在同一时间搜索两个数组,并查找最低值并将其移至第三个数组,我感到有点困惑。尝试合并两个数组,同时排序到第三个

有人可以告诉我一个如何做这样的事情的例子吗?我很困惑。

谢谢大家。

以下是一些细节。

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

是的,数组是排序的,但我必须经过并找到两个数组中的最小值,然后将它添加到第三个数组,然后是两个数组中的第二个最低值,和和.....

+0

这两个数组是否已经排序? –

+0

两个输入数组已经排序了吗? [合并算法](https://en.wikipedia.org/wiki/Merge_algorithm)相当简单 – Bergi

回答

-1

http://www.w3schools.com/jsref/jsref_concat_array.asp

,然后使用的.sort()方法,我不明白你的事实,你必须在同一都要经过2个阵列是什么意思时间。

+0

查看已更新的问题。这可能是一个很好的方法,但在这里特别禁止。 – 2014-03-28 02:20:28

+0

是的,我同意,但数组排序的事实只是张贴 – pj013

1

如果两个阵列已经排序,并且您正在命令他们到一个空的阵列, 有比simplest-

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); 
没有快速的方法

/*返回的值:(阵列) 0, 3.5,7,10,10.5,13,​​14,16,17.5,19,21,22,24.5,25,28,28,31,31.5,34,35,37,38.5,40,43,46,49 */

相关问题