Javascriptにおけるunshift()とpush()の時間的複雑性
2023-09-18 07:43:27
質問
の違いは何ですか?
unshift()
と
push()
というメソッドがありますが、時間的な複雑さの違いは何なのでしょうか?
私は
push()
メソッドは配列の末尾に項目を追加するだけなので O(1) ですが
unshift()
メソッドでは、他の既存の要素をすべて前方に移動させなければならないので、O(log n) または O(n) になるのではないでしょうか?
どのように解決するのですか?
私の知る限り、JavaScriptの言語仕様はこれらの関数の時間的複雑さを義務付けていません。
確かに配列のようなデータ構造(O(1)ランダムアクセス)をO(1)で実装することは可能です。
push
と
unshift
の演算を行うことができます。 C++の
std::deque
はその一例です。 C++のdequesを使ってJavascriptの配列を内部で表現するJavascriptの実装では、したがってO(1)
push
と
unshift
の操作を行うことができます。
しかし、このような時間制限を保証する必要がある場合、次のように自分でロールバックする必要があります。
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み】JavaScriptで配列の要素を削除する - delete vs splice
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] javascriptで2つの数値を連結する方法は?
-
[解決済み] moment.jsでミュータビリティを回避するには?
-
[解決済み] 各オブジェクトに?重複
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] javascriptでオプションのパラメータを扱う
-
[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?