ホームページ > バックエンド開発 > PHPの問題 > PHPで配列の中央値を見つける方法

PHPで配列の中央値を見つける方法

百草
リリース: 2023-06-12 14:51:40
オリジナル
1822 人が閲覧しました

php で配列の中央値を見つける方法: 1. 並べ替え後に中央値を取得し、最初に「sort()」関数を使用して並べ替えてから、中央の値を取得します; 2. 配列関数を使用します。桁数の中央値を見つけるには、最初に「count()」関数を使用して配列の長さを取得し、次に「array_slice()」関数を使用して配列から中央のセグメントを取り出し、最後に「array_sum」を使用します。 ()」関数を使用して合計を計算し、長さで除算します。 3. 「QuickSelect」メソッドを使用すると、並べ替えずに中央値を見つけることができます。

PHPで配列の中央値を見つける方法

このチュートリアルのオペレーティング システム: Windows 10 システム、PHP8.1.3 バージョン、DELL G3 コンピューター。

#php で配列の中央値を見つけるには 3 つの方法があります:

方法 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 サイトの他の関連記事を参照してください。

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