Comprendre la recherche binaire en PHP
La recherche binaire est un algorithme plus efficace pour trouver un élément dans un tableau trié. Cela fonctionne en divisant à plusieurs reprises l’intervalle de recherche en deux. Voici une description détaillée de votre fonction binaireSearch :
function binarySearch(array $arr, float|int $x)
{
$low = 0;
$high = count($arr)-1;
// $midIndex = (int) ($low + ($high - $low)/2);
$i = 0;
while($low <= $high){
$i++;
$midIndex = (int) ($low + (($high - $low)/2)); //the same as intdiv($low + $high, 2);
if($arr[$midIndex] == $x){
return "The number {$x} was found in index {$midIndex} of the array. The number of iteration was {$i}";
}elseif($x > $arr[$midIndex]){
$low = $midIndex +1;
echo $low."\n";
}else{
$high = $midIndex - 1;
}
}
return "The number {$x} was not found in the array";
}
echo binarySearch([1,2,3,4,5,6,7,8,9,10,44,45,46,47,48,49,50], 45)
Copier après la connexion
La fonction binaireSearch accepte deux paramètres :
- $arr : Un tableau trié d'entiers.
- $x : Le nombre à rechercher, qui peut être un flottant ou un entier.
- $low est initialisé au premier index du tableau.
- $high est initialisé au dernier index du tableau.
- $i est un compteur pour garder une trace du nombre d'itérations.
- La boucle while s'exécute tant que l'intervalle de recherche est valide ($low est inférieur ou égal à $high).
- $midIndex est calculé comme l'indice médian de l'intervalle actuel.
- Si l'élément du milieu est égal à $x, la fonction renvoie l'index et le nombre d'itérations.
- Si $x est supérieur à l'élément du milieu, ajustez $low à midIndex + 1 (limitez la recherche à la moitié supérieure).
- Si $x est inférieur à l'élément du milieu, ajustez $high à midIndex - 1 (limitez la recherche à la moitié inférieure).
Comprendre la recherche linéaire en PHP
La recherche linéaire est l'un des algorithmes de recherche les plus simples utilisés pour trouver un élément particulier dans un tableau. Décomposons la fonction LinearSearch en PHP.
function linearSearch(array $arr, float|int $x)
{
for($i=0; $i < count($arr); $i++){
if($x === $arr[$i]){
return "The number {$x} was found in index {$i} of the array\n";
}
}
return "The number {$x} was not found in the array\n";
}
echo linearSearch([1,5,6,3,4,11,3,2], 4);
Copier après la connexion
La fonction LinearSearch accepte deux paramètres :
- $arr : Un tableau d'entiers.
- $x : Le nombre à rechercher, qui peut être un flottant ou un entier.
- La boucle for parcourt chaque élément du tableau. La fonction count ($ arr) renvoie le nombre d'éléments dans le tableau.
- A l'intérieur de la boucle, le code vérifie si l'élément courant ($arr[$i]) est égal à $x. Si une correspondance est trouvée, il renvoie un message indiquant l'index auquel le numéro a été trouvé.
- Si la boucle se termine sans trouver le numéro, la fonction renvoie un message indiquant que le numéro n'a pas été trouvé dans le tableau.
- La recherche linéaire est simple et facile à mettre en œuvre. Il vérifie séquentiellement chaque élément du tableau jusqu'à ce que l'élément souhaité soit trouvé ou que la fin du tableau soit atteinte. Cette approche est simple mais peut s'avérer inefficace pour les grands tableaux, car elle a une complexité temporelle de O(n).
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!