Comment trouver la médiane d'un tableau en php

百草
Libérer: 2023-06-12 14:51:40
original
1750 Les gens l'ont consulté

Comment trouver la médiane d'un tableau en PHP : 1. Obtenez la médiane après le tri, utilisez d'abord la fonction "sort()" pour trier, puis obtenez la valeur médiane 2. Utilisez la fonction de tableau pour trouver la médiane ; , utilisez d'abord la fonction "count()" pour obtenir la longueur du tableau, puis utilisez la fonction "array_slice()" pour supprimer le segment central du tableau, et enfin utilisez la fonction "array_sum()" pour additionner et diviser par la longueur ; 3. Utilisez la méthode "QuickSelect" pour trouver la médiane sans trier.

Comment trouver la médiane d'un tableau en php

Le système d'exploitation de ce tutoriel : système windows10, version PHP8.1.3, ordinateur DELL G3.

Il existe trois façons de trouver la médiane d'un tableau en php :

Méthode 1 : Prendre la médiane après le tri

Cette méthode est relativement simple, il suffit de trier le tableau puis de prendre le milieu valeur. . Cependant, cette méthode présente un inconvénient évident, à savoir que la complexité temporelle du tri est de O(nlogn). Lorsque n est grand, la vitesse est relativement lente.

PHP fournit une fonction sort() qui peut trier le tableau, et nous pouvons utiliser cette fonction pour y parvenir.

Exemple de code :

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;
}
Copier après la connexion

Méthode 2 : Utiliser les fonctions de tableau pour trouver la médiane

PHP fournit des fonctions de tableau que nous pouvons utiliser pour calculer la valeur médiane d'un tableau. La méthode spécifique consiste à utiliser d'abord la fonction count() pour obtenir la longueur du tableau, puis à utiliser la fonction array_slice() pour supprimer le segment central du tableau, et enfin à utiliser la fonction array_sum() pour le résumer, et puis divisez-le par la longueur. Cette méthode est plus simple et plus rapide.

Exemple de code :

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;
}
Copier après la connexion

Méthode 3 : algorithme de sélection rapide

Les deux méthodes ci-dessus nécessitent de trier le tableau, la complexité temporelle est donc relativement élevée. Il existe en fait une méthode appelée QuickSelect qui permet de trouver la médiane sans trier. L'algorithme de sélection rapide présente de nombreuses similitudes avec l'algorithme de tri rapide, mais il ne nécessite qu'une partie du tri rapide, sa complexité temporelle est donc O(n).

Exemple de code :

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;
    }
}
Copier après la connexion

Les trois méthodes ci-dessus permettent d'obtenir la valeur intermédiaire d'un tableau. Différentes méthodes conviennent à différents scénarios. Si vous avez besoin d'obtenir plusieurs valeurs intermédiaires, vous pouvez utiliser une variante de la méthode ci-dessus. Quelle que soit la méthode utilisée, vous devez comprendre les opérations de base des tableaux avant de pouvoir mieux gérer les tableaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal