Partage d'algorithme de recherche de tableau simple PHP

小云云
Libérer: 2023-03-21 20:02:02
original
1450 Les gens l'ont consulté

La recherche de tableaux en PHP peut utiliser la recherche séquentielle ou la recherche binaire. Parmi eux, la recherche séquentielle est relativement simple, qui consiste à comparer et rechercher un par un. Mais l’inconvénient est également évident si l’élément recherché se trouve en dernier, le nombre de boucles sera trop important.

1. Description de l'algorithme de recherche séquentielle

Recherchez le tableau un par un pour confirmer s'il y a un élément, et retournez l'élément s'il existe des informations de localisation. Les informations du drapeau peuvent être définies, la valeur initiale est fausse. Recherchez l'emplacement de sortie directe et définissez le drapeau sur vrai. Si l'indicateur de fin de boucle est toujours faux, cela signifie qu'il n'a pas été trouvé.

Réflexion du code :

<br/>
Copier après la connexion
$arr =[123,19,38,29,10,34];
function search($arr,$target){
    // 参数:目标数组 目标元素
	foreach ($arr as $key => $value) {
		if($value == $target){
			return $key.&#39;<br>&#39;;
		}
	}
	return false;
}
Copier après la connexion

2. Description de l'algorithme de recherche binaire <br/>

Supposons que le tableau soit dans un ordre ascendant strict. Si l'élément cible est plus grand que la valeur médiane, la plage de recherche est réduite de moitié vers la droite. Si la valeur de l'élément cible est inférieure à la valeur de l'élément du milieu, la plage de recherche est réduite de moitié vers la gauche.

Réflexion du code :

function half_search($arr,$target){
	// 定义出初始的第一个,最后一个元素的下标范围
	$len = count($arr);
	$left =0;
	$right =$len -1;
	// 循环查找
	// 范围不断的移动 ,必须满足一个条件
	// 最左侧元素的下标 小于等于右侧元素的下标
	while($left <= $right){
	 	// 中间元素的下标
	 	$middle = floor(($left + $right) /2);
	 	// 目标元素与中间元素进行比较
	 	if($target == $arr[$middle]){
	 		return $middle;
	 	}
	 	// 如果目标元素小于中间元素
	 	// 范围向左缩小一半	
	 	if($target < $arr[$middle]){
	 		$right =$middle-1 ;
	 	}
	 	// 如果目标元素大于中间元素
	 	// 范围向右缩小一半
	 	if($target > $arr[$middle]){
	 		$left = $middle + 1;
	 	}
	}
	 // 循环终止了
	 // 没有找到
	 return false;
}
Copier après la connexion

Recommandations associées :

Méthode binaire PHP pour implémenter le didacticiel de la fonction de recherche de tableau

Fonctions clés de recherche de tableau PHP

Résumé de la fonction de recherche de tableau PHP

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal