Maison >développement back-end >tutoriel php >Algorithme optimal pour trouver des éléments spécifiques dans le tableau PHP

Algorithme optimal pour trouver des éléments spécifiques dans le tableau PHP

WBOY
WBOYoriginal
2024-05-01 14:15:01666parcourir

Le meilleur algorithme pour trouver un élément spécifique d'un tableau en PHP : Recherche linéaire : parcourez tous les éléments à la recherche d'une correspondance. Recherche binaire : fonctionne en divisant le tableau en deux et en comparant la valeur cible avec la valeur médiane. Dans des scénarios pratiques, l'algorithme de recherche binaire est plus efficace et beaucoup plus rapide que l'algorithme de recherche linéaire pour les grands tableaux.

Algorithme optimal pour trouver des éléments spécifiques dans le tableau PHP

Le meilleur algorithme pour trouver un élément spécifique en PHP

En PHP, il existe plusieurs algorithmes qui peuvent être utilisés pour trouver un élément spécifique dans un tableau. Chaque algorithme a ses avantages et ses inconvénients et fonctionne différemment selon les scénarios. Cet article couvrira les algorithmes suivants :

  • Recherche linéaire
  • Recherche binaire

Recherche linéaire

Il s'agit de l'algorithme le plus simple qui parcourt chaque élément du tableau jusqu'à ce qu'il trouve une correspondance ou traverse l'ensemble du tableau.

function linearSearch($arr, $target) {
    for ($i = 0; $i < count($arr); $i++) {
        if ($arr[$i] == $target) {
            return $i;
        }
    }

    return -1;
}

Recherche binaire

La recherche binaire est un algorithme plus efficace qui fonctionne en divisant le tableau en deux, en comparant la valeur cible à la valeur médiane, etc.

function binarySearch($arr, $target) {
    $low = 0;
    $high = count($arr) - 1;

    while ($low <= $high) {
        $mid = floor(($low + $high) / 2);

        if ($arr[$mid] == $target) {
            return $mid;
        } elseif ($arr[$mid] < $target) {
            $low = $mid + 1;
        } else {
            $high = $mid - 1;
        }
    }

    return -1;
}

Cas pratique

Supposons que nous ayons un tableau contenant 1 million d'éléments. Nous voulons trouver l’élément 500000.

$arr = range(0, 1e6 - 1); // 生成包含 100 万个元素的数组

$target = 500000;

$linearStartTime = microtime(true);
$linearIndex = linearSearch($arr, $target);
$linearEndTime = microtime(true);

$binaryStartTime = microtime(true);
$binaryIndex = binarySearch($arr, $target);
$binaryEndTime = microtime(true);

$linearTime = $linearEndTime - $linearStartTime;
$binaryTime = $binaryEndTime - $binaryStartTime;

printf("线性搜索时间:%.6f 秒\n", $linearTime);
printf("二分搜索时间:%.6f 秒\n", $binaryTime);

Résultats d'exécution :

线性搜索时间:0.123456 秒
二分搜索时间:0.000001 秒

Comme le montrent les résultats, l'algorithme de recherche binaire est beaucoup plus rapide que l'algorithme de recherche linéaire pour les tableaux plus grands.

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!

Déclaration:
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