Maison >développement back-end >tutoriel php >Comment implémenter la recherche binaire en PHP ? (exemple de code)

Comment implémenter la recherche binaire en PHP ? (exemple de code)

青灯夜游
青灯夜游original
2019-03-12 14:44:022386parcourir

La recherche binaire (ou recherche binaire) est une technique de recherche utilisée pour rechercher des éléments dans un tableau trié. Alors comment implémenter la recherche binaire en PHP ? L'article suivant vous présentera comment utiliser l'itération et la récursivité pour implémenter la recherche binaire en PHP. J'espère qu'il vous sera utile. [Recommandation du didacticiel vidéo : Tutoriel PHP]

Comment implémenter la recherche binaire en PHP ? (exemple de code)

Méthode 1 : Utiliser l'itération

Étapes :

1. Triez le tableau car la recherche binaire ne fonctionne que sur les plages triées

2 Si l'élément que nous voulons rechercher est plus grand que le bon If. l'élément du milieu est recherché, l'élément du milieu est calculé, sinon la recherche sur le côté gauche est calculée.

3. Si l'élément est trouvé, True est renvoyé.

Code d'implémentation :

<?php 
header("content-type:text/html;charset=utf-8");
function binarySearch(Array $arr, $x) 
{ 
    // check for empty array 
    if (count($arr) === 0) return false; 
    $low = 0; 
    $high = count($arr) - 1; 
      
    while ($low <= $high) { 
          
        // 计算中间索引
        $mid = floor(($low + $high) / 2); 
   
        // 在中间找到元素
        if($arr[$mid] == $x) { 
            return true; 
        } 
  
        if ($x < $arr[$mid]) { 
            // 搜索数组的左侧
            $high = $mid -1; 
        } 
        else { 
            // 搜索数组的右侧
            $low = $mid + 1; 
        } 
    } 
      
    // 元素x不存在,返回false
    return false; 
} 
  
$arr = array(1, 2, 3, 4, 5); 
$value = 5; 
if(binarySearch($arr, $value) == true) { 
    echo "元素".$value.": 存在"; 
} 
else { 
    echo "元素".$value.": 不存在"; 
} 
?>

Sortie :

元素5: 存在

Méthode 2 : Utiliser la récursivité

La récursion est la façon dont nous appelons la même fonction à plusieurs reprises jusqu'à ce qu'une condition de base soit remplie pour mettre fin à la récursion. Le principe est le même que la première méthode, il suffit de modifier les paramètres de la fonction de manière récursive et de décomposer le problème.

Code d'implémentation :

<?php 
header("content-type:text/html;charset=utf-8");
function binarySearch(Array $arr, $start, $end, $x){ 
    if ($end < $start) 
        return false; 
   
    $mid = floor(($end + $start)/2); 
    if ($arr[$mid] == $x)  
        return true; 
  
    elseif ($arr[$mid] > $x) { 
  
        // 调用binarySearch()函数本身, 改变其中参数:$start, $mid-1
        return binarySearch($arr, $start, $mid - 1, $x); 
    } 
    else { 
  
        // 调用binarySearch()函数本身, 改变其中参数:mid + 1, end
        return binarySearch($arr, $mid + 1, $end, $x); 
    } 
} 
  
$arr = array(1, 2, 3, 4, 5); 
$value = 6; 
if(binarySearch($arr, 0, count($arr) - 1, $value) == true) { 
    echo "元素".$value.": 存在"; 
} 
else { 
    echo "元素".$value.": 不存在"; 
} 
?>

Sortie :

元素6: 不存在

Ce qui précède est l'intégralité du contenu de cet article, j'espère que cela pourra vous aider tout le monde apprend Aide. Pour un contenu plus passionnant, vous pouvez prêter attention aux colonnes de didacticiels pertinentes du site Web PHP chinois ! ! !

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