ホームページ >バックエンド開発 >PHPチュートリアル >一般的な PHP 組み込み配列関数の時間計算量はどのくらいですか?

一般的な PHP 組み込み配列関数の時間計算量はどのくらいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-09 12:30:15450ブラウズ

What are the Time Complexities of Common PHP Built-in Array Functions?

PHP 組み込み関数の時間計算量を理解する

さまざまな PHP 組み込み関数は、データ構造を処理するときに異なる時間計算量を示します。この記事では、これらの関数の理論的および実際的な Big-O 時間の包括的なリストを提供し、開発者がコードのパフォーマンスを最適化できるようにします。

興味深い点

  • isset/array_key_exists: ルックアップ操作では in_array および array_search よりも大幅に高速です。
  • (Union): array_merge よりもわずかに高速で、より簡潔なデータを提供します。配列を結合するための構文。
  • shuffle: array_rand と同じ Big-O の複雑さを持ち、どちらの関数もデータのランダム化に適しています。
  • array_pop/array_push: 実行中に発生するペナルティにより、array_shift/array_unshift よりも高速になります。

Lookups

  • array_key_exists: 理論上は O( n) 複雑さ。
  • isset( $array[$index] ): array_key_exists と同様、ほぼ一定の時間計算量を示します。
  • in_array: O(n)、配列全体で線形検索を実行します。 .
  • array_search: O(n)、同じコアを利用in_array として関数を実行しますが、値を返します。

キュー関数

  • array_push: O(∑ var_i, for all i)、ここで var_i は追加を表しますとして渡される値argument.
  • array_pop: O(1).
  • array_shift: O(n)、再インデックスが必要なため。
  • array_unshift: O(n ∑ var_i、すべての i)、これも必要な再インデックスの結果です。

配列交差、結合、減算

  • array_intersect_key: 交差の場合は 100%、O(Max(param_i_size) * ∑param_i_count、すべての i);交差が 0% の場合、O(∑param_i_size, for all i).
  • array_intersect: 交差が 100% の場合、O(n^2 * ∑param_i_count, for all i);交差が 0% の場合、O(n^2).
  • array_intersect_assoc: array_intersect_key に似ていますが、同じ Big-O 時間計算量を示します。
  • array_diff : O(π param_i_size、すべての i に対して)、次の積を表します。パラメーターのサイズ。
  • array_diff_key: O(∑ param_i_size, for i != 1)。最初の配列の反復が除外されるためです。
  • array_merge : O(∑ array_i, i != 1)、ではない最初の配列の反復が必要です。
  • (Union): O(n)、n は 2 番目の配列のサイズであり、array_merge よりも低いオーバーヘッドが発生します。
  • array_replace: O(∑ array_i、すべてi).

ランダム

  • シャッフル: O(n).
  • array_rand: O (n)、線形を含むsearch.

明らかな Big-O

  • array_fill: O(n).
  • array_fill_keys : O(n).
  • range: O(n).
  • array_splice: O(オフセット長).
  • array_slice: 長さ = の場合は O(オフセット長) または O(n) NULL.
  • array_keys: O(n).
  • array_values: O(n).
  • array_reverse: O(n).
  • array_pad: O(pad_size).
  • array_flip: O(n).
  • array_sum: O(n).
  • 配列_製品: O(n).
  • array_reduce: O(n).
  • array_filter: O(n).
  • 配列マップ: O(n).
  • array_chunk: O(n).
  • array_combine: O(n).

以上が一般的な PHP 組み込み配列関数の時間計算量はどのくらいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。