Maison >développement back-end >tutoriel php >Exemple d'implémentation PHP d'une fonction de recherche de tableau basée sur des compétences de dichotomie [boucle et algorithme récursif]_php

Exemple d'implémentation PHP d'une fonction de recherche de tableau basée sur des compétences de dichotomie [boucle et algorithme récursif]_php

韦小宝
韦小宝original
2017-12-15 10:07:591449parcourir

Cet article présente principalement PHP pour implémenter la fonction de recherche array basée sur la méthode bisection, et analyse la boucle while et la récursionAppelez l'algorithme pour implémenter la fonction de recherche bisection. Les amis qui en ont besoin peuvent se référer à cet article. Cet article décrit un exemple de la façon dont PHP implémente la fonction de recherche de tableau basée sur méthode de bissection. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants : Dichotomie. Utilisez respectivement la méthode de boucle while et la méthode d'appel récursif.


<?php
// 二分法的使用数组必须是有序的,或升序,或降序
$arr = array(
  1, 3, 5, 7, 9, 13
);
// 递归调用(相比较好理解
function bsearch_r($v, $arr, $low, $high){
  if ($low > $high) {// 先判断结束条件
    return -1;
  }
  $i = intval(($high + $low)/2);
  if ($arr[$i] > $v){
    return bsearch_r($v, $arr, $low, $i-1);// 递归
  } else if ($arr[$i] < $v){
    return bsearch_r($v, $arr, $i+1, $high);
  } else {
    return $i;
  }
}
echo bsearch_r(1, $arr, 0, count($arr)-1);// 0
echo &#39;<hr/>&#39;;
echo bsearch_r(14, $arr, 0, count($arr)-1);// -1
echo &#39;<hr/>&#39;;
// while循环
function bsearch($v, $arr){
  $low = 0;
  $high = count($arr)-1;// 使用下标,注意减去1
  // 注意凡是使用到while的时候,一定要防备无限循环的时候,注意终止循环的判断。
  while($low <= $high){// 比如$low<=$high,这个等于号必须有。
    $i = intval(($high + $low)/2);
    if ($arr[$i] > $v){
      $high = $i-1;
    } else if ($arr[$i] < $v){
      $low = $i+1;
    } else {
      return $i;
    }
  }
  return -1;// 找不到的时候返回-1
}
echo bsearch(13, $arr);// 5
echo &#39;<hr/>&#39;;
echo bsearch(14, $arr);// -1


Résultats en cours d'exécution :

C'est tout pour cet article Contenu, j'espère que cela pourra vous aider ! !

Recommandations associées :

Fichier unique PHP et téléchargement de fichiersExemple_php

Comment PHP implémente l'algorithme Naive Bayes pour l'apprentissage automatique

php implémente la méthode de séquence de Fibonacci

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