ホームページ > バックエンド開発 > PHPチュートリアル > 一般的な PHP 配列関数の最大の時間複雑さは何ですか?

一般的な PHP 配列関数の最大の時間複雑さは何ですか?

DDD
リリース: 2024-12-07 11:01:12
オリジナル
859 人が閲覧しました

What are the Big-O Time Complexities of Common PHP Array Functions?

PHP 関数の Big-O

PHP を使用する場合、さまざまな組み込み関数の効率は大きく異なる可能性があります。この記事は、理論的 (または実際的な) ビッグ O 時間についての洞察を提供することを目的としています。ハッシュ検索により O(1) に変換されます。

isset($array[$index]): O(n)、ハッシュ検索のため、O(1) にも近い。in_array: O(n)、ハッシュベースの検索より遅い。

    array_search: O(n)、 in_array.
  • キューに似ています。関数
  • array_push: O(∑ var_i, for all i)

array_pop: O(1)array_shift: O(n), re -インデックスキー。

    array_unshift: O(n ∑ var_i、すべての i)、インデックスの再作成により遅くなります。
  • 配列交差、結合、減算
  • array_intersect_key: O(Max (param_i_size)*∑param_i_count、すべての i) の場合交差は 100% です。

array_intersect: O(n^2*∑param_i_count, for all i) if交差が 100% です。array_intersect_assoc: array_intersect_key と同様です。

    array_diff: O(π param_i_size、すべてi)、すべてのパラメータ サイズの積。
  • array_diff_key: O(∑ param_i_size, for i != 1).
  • ランダム
  • シャッフル: O(n)

array_rand: O(n)

    明らかなビッグオー
  • array_fill: O(n)

array_fill_keys: O(n)range: O(n)

    array_splice: O(オフセット長)
  • array_slice: O(オフセット長) または長さの場合は O(n) NULL
  • 配列キー: O(n)
  • array_values: O(n)
  • array_reverse: O(n)
  • 注記
  • すべての計算では、ハッシュ ルックアップが次のように行われることを前提としています。 O(1).

漸近的なパフォーマンスは、特定の実装の詳細と入力データによって異なる場合があります。配列はゼロベースであるため、array_push は配列の最後にプッシュします。

    以上が一般的な PHP 配列関数の最大の時間複雑さは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート