试图合并两个数组,同时排序到第三个数组
Trying to merge two arrays, while sorting into third one
我有一个作业,本质上是两个数组必须排序成一个。这需要注意的是,不能先组合再排序。换句话说,我必须同时遍历这两个数组,然后从这个数组中生成第三个数组,这个数组已经排序了。我有点困惑,如何可能搜索两个数组a的同一时间,并寻找最低值,并将其移动到第三个数组。
谁能给我举个例子,告诉我这样的事情是怎么做的?我被它弄糊涂了。谢谢所有。
以下是一些细节。
•调用函数后不应更改两个参数数组。总的来说,这是一个很好的实践。•不能简单地将两个数组相加,然后对结果进行排序。相反,您应该依次检查数组中的每个元素,看看哪个更小。•返回一个新创建的包含正确内容的数组。•执行算法的时间应该与两个输入数组中元素数量的和成正比。
是的,数组已经排序了,但我必须遍历并找到两个数组中最小的值,然后将其添加到第三个数组中,然后是两个数组中第二个最小的值,以此类推.....
如果这两个数组已经排序,并且您将它们排序到一个空数组中,没有比最简单的方法更快的了——
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*/
http://www.w3schools.com/jsref/jsref_concat_array.asp
,然后使用。sort()方法,我不明白你的意思是你必须同时遍历两个数组
相关文章:
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- Javascript中的多维数组排序索引问题
- 如何按日期对Javascript对象数组排序
- 数组排序后显示更改
- 当许多元素相等时,Javascript数组排序无法正常工作
- Javascript数组排序速度受字符串长度的影响
- 按唯一键将对象数组排序为数组
- 以 js 为单位的数组排序
- js 数组排序无法正常工作
- 数组排序.论点从何而来
- 不需要的数组排序
- 数组排序不正确/不可预测,使用 indexOf 时
- Javascript将数组排序到树中
- 随后的多维数组排序会产生意外的结果
- 数组排序基于纯javascript搜索文本匹配
- Javascript自定义数组按数组排序
- 使用字符串按属性错误对对象进行数组排序
- 多维数组排序
- JavaScript与PHP在数组排序中的对比
- Javascript-关联数组排序