如何在不使用 sort() 的情况下在 JavaScript 中将两个排序数组合并到一个排序数组中

新手上路,请多包涵

在此程序中,合并两个数组,然后使用临时排序。但这不是正确的方法。因为两个数组已排序,所以方法应该是唯一的,即合并两个以排序形式排序的数组应该是唯一的。

例子:

  • a=[1,2,3,5,9]
  • b=[4,6,7,8]
 function mergeSortdArray(a,b){
	for(var i=0;i<b.length;i++){
		a.push(b[i]);
	}
	//console.log(a);
for(i=0;i<a.length;i++)
    {
        for(j=i+1;j<a.length;j++)
        {
            if(a[i]>a[j])
            {
                temp=a[i];
                a[i]=a[j];
                a[j]=temp;
            }
        }
    }
    return a;
}
console.log(mergeSortedArray([1,2,3,5,9],[4,6,7,8]));

原文由 Amit Modi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 224
1 个回答

嘿,我根据一个简单的 .concat() 和 .sort() 方法从上面运行了每个人的代码。对于大数组和小数组,.concat() 和 .sort() 在更短的时间内完成,显着。

 console.time("mergeArrays");
mergeArrays([1,2,3,5,9],[4,6,7,8])
console.timeEnd("mergeArrays");
//mergeArrays: 0.299ms

console.time("concat sort");
[1,2,3,5,9].concat([4,6,7,8]).sort();
console.timeEnd("concat sort");
//concat sort:0.018ms

对于大小为 10,000 的数组,随着连接和排序的运行速度比以前更快(4.831 毫秒对 0.008 毫秒),差异甚至更大。

javascript 中发生了什么让它更快?

原文由 David Lac 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题