配列操作のプロセス中に、配列の中央値など、配列内の中間値を取得する必要がある場合があります。 PHP は非常に柔軟な言語であり、さまざまなメソッドを使用して配列の中間値を取得できます。この記事では、配列の中間値を取得するいくつかの方法を紹介します。
方法 1: 並べ替え後に中央値を取得する
この方法は比較的単純で、配列を並べ替えて中央の値を取得するだけです。しかし、この方法には明らかな欠点があり、ソートの計算量は O(nlogn) であり、n が大きい場合には速度が相対的に遅くなります。
PHP には、配列を並べ替えることができる sort() 関数が用意されており、この関数を使用してそれを実現できます。
コード例:
function get_median($arr) { sort($arr); $count = count($arr); $middle = floor(($count - 1) / 2); if ($count % 2 == 0) { $median = ($arr[$middle] + $arr[$middle + 1]) / 2; } else { $median = $arr[$middle]; } return $median; }
方法 2: 配列関数を使用して中央値を見つける
PHP にはいくつかの配列関数が用意されており、それらを使用して配列の中央値を計算できます。 。具体的な方法は、まず count() 関数を使用して配列の長さを取得し、次に array_slice() 関数を使用して配列から中央のセグメントを取り出し、最後に array_sum() 関数を使用してそれを合計します。そしてそれを長さで割ります。この方法はより簡単で高速です。
コード例:
function get_median($arr) { sort($arr); $count = count($arr); $middle = floor(($count - 1) / 2); $median = ($count % 2 == 0) ? (array_sum(array_slice($arr, $middle, 2)) / 2) : $arr[$middle]; return $median; }
方法 3: クイック選択アルゴリズム
上記の 2 つの方法はどちらも配列の並べ替えが必要なため、時間の複雑さは比較的高くなります。実は、並べ替えずに中央値を見つけることができる QuickSelect というメソッドがあります。クイック選択アルゴリズムはクイック ソート アルゴリズムと多くの類似点がありますが、クイック ソートの一部のみが必要なため、時間計算量は O(n) です。
コード例:
function get_median($arr) { if (count($arr) % 2 == 0) { $k = count($arr) / 2; } else { $k = (count($arr) + 1) / 2; } return quick_select($arr, $k); } function quick_select(&$arr, $k) { if (count($arr) == 1) return $arr[0]; $p = $arr[0]; $f = $l = array(); foreach ($arr as $v) { if ($v < $p) $f[] = $v; elseif ($v > $p) $l[] = $v; } if ($k <= count($f)) { return quick_select($f, $k); } elseif ($k > count($arr) - count($l)) { return quick_select($l, $k - (count($arr) - count($l))); } else { return $p; } }
上記は、配列の中間値を取得する 3 つの方法であり、シナリオごとに異なる方法が適しています。複数の中間値を取得する必要がある場合は、上記の方法のバリエーションを使用できます。どの方法を使用する場合でも、配列をより適切に処理するには、まず配列の基本操作を理解する必要があります。
以上がPHPで配列の中間値を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。