Maison  >  Article  >  développement back-end  >  Partage d'algorithme de recherche de tableau simple PHP

Partage d'algorithme de recherche de tableau simple PHP

小云云
小云云original
2018-03-21 10:28:091403parcourir

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/>
$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;
}

2. Description de l'algorithme de recherche binaire

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;
}

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!

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