2011-12-08 6 views
3

を実行している私は、10000項目、今私は1つの配列にマージしたいので、私は連結でそれを行うと、両方の二つの配列を持っている場合:javascriptの連結時間

array1=array1.concat(array2); 

が、すべてのボディが実行しているか知っているん時間?定数またはN?速度の面でそれらを合併するよりよい方法があります。任意のヒントありがとう。

+0

これはちょっと混乱します。「連結」と「マージ」は、リストとは異なる2つのことです。 – Pointy

+0

well ..私は2つの配列を1つにマージしたいのですが、私はjavascriptでconcatを使用しています。 – bingjie2680

+0

@ bingjie2680: "連結"とは単にarray1をarray1に追加することを意味し、 "マージする"とは2つの配列の項目にロジック(例:ソート順)が散在することを意味します。あなたはたぶんここで連結を意味するだけでしょう。 – maerics

答えて

4

ECMAScript仕様では、どのような操作にも大きな性能要件が要求されているとは思えないので、実装に依存します。検証する唯一の方法は、ベンチマークを作成してターゲットのインタプリタで実行することです。

ほとんどのJavaScriptインタプリタは、リストをリンク型リストではなくベクトル型配列として実装していると思いますので、ほとんどのエンジンでconcat操作がO(n)になる可能性があります。

+0

2つの配列をリストにリンクしたい場合は、この場合にどのように実装できるか考えてください。 – bingjie2680

+0

@ bingjie2680独自のリンクリスト表現を実装する必要があります。つまり、JavaScriptランタイムに配列を動作させる方法、つまり言い換えれば、 – Pointy

+0

ok、暖かい助けをいただきありがとうございます。 – bingjie2680