Maison > Article > développement back-end > Implémentation PHP d'un exemple de code de recherche binaire
La
Recherche binaire, également connue sous le nom de demi-recherche, présente l'avantage de moins de comparaisons, une vitesse de recherche rapide et de bonnes performances moyennes. Son inconvénient est que la table à rechercher doit être ordonnée ; table, et insertionsupprimerDifficile. Par conséquent, la méthode de recherche binaire convient aux listes ordonnées qui ne changent pas fréquemment mais sont fréquemment recherchées. Tout d'abord, en supposant que les éléments du tableau sont classés par ordre croissant, comparez le mot-clé enregistré en position médiane du tableau avec le mot-clé de recherche. Si les deux sont égaux, la recherche réussit, sinon utilisez l'enregistrement en position médiane pour. divisez le tableau en deux sous-tableaux, le premier et le dernier. Si Si le mot-clé enregistré en position médiane est supérieur au mot-clé de recherche, alors le sous-tableau précédent sera recherché plus loin, sinon le sous-tableau suivant sera recherché plus loin. Répétez le processus ci-dessus jusqu'à ce qu'un enregistrement répondant aux conditions soit trouvé, ce qui rend la recherche réussie, ou jusqu'à ce que la sous-table n'existe plus, auquel cas la recherche échoue.
function binary(&$arr,$low,$top,$target){ while($low <= $top){ $mid = floor(($low+$top)/2); echo $mid."<br>"; if($arr[$mid]==$target){ return $arr[$mid]; }elseif($arr[$mid]<$target){ $low = $mid+1; }else{ $top = $mid-1; } } return -1; }
function binaryRecursive(&$arr,$low,$top,$target){ if($low<=$top){ $mid = floor(($low+$top)/2); if($mid==$target){ return $arr[$mid]; }elseif($arr[$mid]<$target){ return binaryRecursive($arr,$mid+1,$top,$target); }else{ return binaryRecursive($arr,$low,$top-1,$target); } }else{ return -1; } }
Remarque : le principe de la recherche binaire est tableau Organiser dans l'ordre
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!