JavaScript 的 concat 方法运行时间

16

如果我有两个长度均为10000的数组,现在我想将它们合并成一个数组,那么我可以使用concat方法:

 array1=array1.concat(array2);

但是有人知道运行时间是多久吗?是常数还是N?在速度方面是否有更好的合并方式。感谢任何提示。


这有点令人困惑:“连接”和“合并”是与列表相关的两个不同操作。 - Pointy
嗯...我想把两个数组合并成一个,但是在JavaScript中我们使用concat,对吧? - bingjie2680
@bingjie2680:我想区别在于,“连接”仅意味着将array2附加到array1,而“合并”可能意味着两个数组的项目通过某些逻辑交错(例如排序顺序)。你可能只是想在这里进行连接。 - maerics
@maerics,是的,没错,顺序不重要。 - bingjie2680
这个网站是用来测试你的脚本性能的,如果你决定进行测试的话。 - Bakudan
1个回答

21

我怀疑 ECMAScript 规范没有针对任何操作制定大O性能要求,因此这将取决于实现。唯一验证的方法是编写基准测试并在目标解释器上运行。

话虽如此,我猜测大多数 JavaScript 解释器将数组实现为向量类型数组而不是链表,因此在大多数引擎上,连结操作很可能是 O(n)


如果我想要将两个数组转换为链表,你有什么实现的想法吗? - bingjie2680
1
@bingjie2680,你需要自己实现链表表示。换句话说,无法告诉JavaScript运行时如何使其数组工作。 - Pointy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接