La recherche de tableaux en PHP peut utiliser la recherche séquentielle ou la recherche binaire. Parmi eux, la recherche séquentielle est relativement simple, qui consiste à comparer et rechercher un par un. Mais l’inconvénient est également évident si l’élément recherché se trouve en dernier, le nombre de boucles sera trop important.
Recherchez le tableau un par un pour confirmer s'il y a un élément, et retournez l'élément s'il existe des informations de localisation. Les informations du drapeau peuvent être définies, la valeur initiale est fausse. Recherchez l'emplacement de sortie directe et définissez le drapeau sur vrai. Si l'indicateur de fin de boucle est toujours faux, cela signifie qu'il n'a pas été trouvé.
<br/>
$arr =[123,19,38,29,10,34]; function search($arr,$target){ // 参数:目标数组 目标元素 foreach ($arr as $key => $value) { if($value == $target){ return $key.'<br>'; } } return false; }
Supposons que le tableau soit dans un ordre ascendant strict. Si l'élément cible est plus grand que la valeur médiane, la plage de recherche est réduite de moitié vers la droite. Si la valeur de l'élément cible est inférieure à la valeur de l'élément du milieu, la plage de recherche est réduite de moitié vers la gauche.
function half_search($arr,$target){ // 定义出初始的第一个,最后一个元素的下标范围 $len = count($arr); $left =0; $right =$len -1; // 循环查找 // 范围不断的移动 ,必须满足一个条件 // 最左侧元素的下标 小于等于右侧元素的下标 while($left <= $right){ // 中间元素的下标 $middle = floor(($left + $right) /2); // 目标元素与中间元素进行比较 if($target == $arr[$middle]){ return $middle; } // 如果目标元素小于中间元素 // 范围向左缩小一半 if($target < $arr[$middle]){ $right =$middle-1 ; } // 如果目标元素大于中间元素 // 范围向右缩小一半 if($target > $arr[$middle]){ $left = $middle + 1; } } // 循环终止了 // 没有找到 return false; }
Recommandations associées :
Méthode binaire PHP pour implémenter le didacticiel de la fonction de recherche de tableau
Fonctions clés de recherche de tableau PHP
Résumé de la fonction de recherche de tableau PHP
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!