Maison  >  Article  >  développement back-end  >  Explication détaillée des exemples d'algorithmes de recherche binaire en PHP

Explication détaillée des exemples d'algorithmes de recherche binaire en PHP

墨辰丷
墨辰丷original
2018-06-01 11:00:551732parcourir

Cet article présente principalement l'algorithme de recherche binaire en PHP. Il résume et analyse les principes et techniques spécifiques de mise en œuvre de l'algorithme de recherche binaire sous forme d'exemples. Les amis dans le besoin peuvent se référer au

Binaire suivant. recherche dans les points avancés Il peut être utilisé dans le développement. Bien sûr, lors de la recherche d'un emploi dans une grande entreprise, il y aura des questions d'entretien comme celle-ci. Jetons un coup d'œil à un article sur la façon d'implémenter la recherche binaire en php. les détails sont les suivants.

La dichotomie (dichotomie) est la méthode de division en deux Soit [a, b] l'intervalle fermé de R. La méthode de dichotomie successive consiste à créer la séquence d'intervalles suivante. ([an, bn]) : a0= a, b0=b, et pour tout entier naturel n, [an+1, bn+1] est soit égal à [an, cn], soit égal à [cn, bn] , où cn représente le point médian de [an, bn].

Exemple 1 :

header('Content-Type: text/html; charset=utf-8;');
$arr = array(2,33,22,1,323,321,28,36,90,123);
sort($arr);
//二分法查找
echo $index = binarySearch($arr,321);
function binarySearch($arr,$key){
 $len = count($arr);
 $mid = -1;
 $start = 0;
 $end  = $len-1;
 while($start<=$end){
 $mid = (int)(($start+$end)/2);
 echo $mid."\n";
 if($arr[$mid] == $key){
  return $mid;
 }else if($arr[$mid] < $key){
  $start = $mid+1;
 }else if($arr[$mid] > $key){
  $end = $mid-1;
 }
 }
}

Exemple 2 :

<?php
//search函数 其中$array为数组,$k为要找的值,$low为查找范围的最小键值,$high为查找范围的最大键值
function search($array, $k, $low=0, $high=0)
{
  if(count($array)!=0 and $high == 0) //判断是否为第一次调用
  {
    $high = count($array);
  }
  if($low <= $high) //如果还存在剩余的数组元素
  {
    $mid = intval(($low+$high)/2); //取$low和$high的中间值
    if ($array[$mid] == $k) //如果找到则返回
    {
      return $mid;
    }
    elseif ($k < $array[$mid]) //如果没有找到,则继续查找
    {
      return search($array, $k, $low, $mid-1);
    }
    else
    {
      return search($array, $k, $mid+1, $high);
    }
  }
  return -1;
}
$array = array(4,5,7,8,9,10); //测试search函数
echo search($array, 8); //调用search函数并输出查找结果
?>

Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

phpImplémenter le fonctionnement de la base de données Classe modèle

phpImplémenter le cryptage et le décryptage d'URL

PHP foreach implémente la traversée de tableaux multidimensionnels

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