Algorithme de recherche binaire avec EXEMPLE
โก Rรฉsumรฉ intelligent
L'algorithme de recherche binaire trouve un รฉlรฉment dans une liste triรฉe en divisant successivement par deux l'intervalle de recherche et en comparant l'รฉlรฉment recherchรฉ avec l'รฉlรฉment mรฉdian. รgalement appelรฉe recherche par demi-intervalle ou recherche logarithmique, elle est beaucoup plus rapide que le parcours de chaque รฉlรฉment.
Avant d'apprendre la recherche binaire, voyons ce qu'est la recherche.
Qu'est-ce que la recherche?
La recherche est un utilitaire qui permet ร son utilisateur de trouver des documents, des fichiers, des mรฉdias ou tout autre type de donnรฉes contenues dans une base de donnรฉes. La recherche fonctionne sur le principe simple de faire correspondre les critรจres avec les enregistrements et de les afficher ร l'utilisateur. De cette faรงon, la fonction de recherche la plus รฉlรฉmentaire fonctionne.
Qu'est-ce que la recherche binaire ?
La recherche binaire est un type avancรฉ d'algorithme de recherche qui permet de trouver et d'extraire des donnรฉes d'une liste triรฉe d'รฉlรฉments. Son principe de fonctionnement consiste ร diviser les donnรฉes de la liste en deux jusqu'ร trouver la valeur recherchรฉe et l'afficher ร l'utilisateur dans les rรฉsultats. La recherche binaire est communรฉment appelรฉe recherche par paires. recherche ร demi-intervalle recherche logarithmique.
Comment fonctionne la recherche binaire ?
La recherche binaire fonctionne de la maniรจre suivante :
- Le processus de recherche commence par la localisation de l'รฉlรฉment central du tableau de donnรฉes triรฉ.
- Ensuite, la valeur clรฉ est comparรฉe ร l'รฉlรฉment.
- Si la valeur clรฉ est infรฉrieure ร l'รฉlรฉment central, la recherche analyse les valeurs supรฉrieures ร l'รฉlรฉment central ร des fins de comparaison et de correspondance.
- Si la valeur clรฉ est supรฉrieure ร l'รฉlรฉment central, la recherche analyse les valeurs infรฉrieures ร l'รฉlรฉment central ร des fins de comparaison et de correspondance.
Algorithme de recherche binaire (pseudocode)
La recherche binaire peut รชtre dรฉcrite comme une courte routine itรฉrative. Elle utilise deux pointeurs, l'un vers le bas et l'autre vers le haut, et rรฉduit l'intervalle de recherche jusqu'ร ce que la cible soit trouvรฉe ou que l'intervalle soit vide.
binarySearch(array, target)
low = 0
high = length(array) - 1
while low <= high
mid = (low + high) / 2 // floor value
if array[mid] == target
return mid
else if array[mid] < target
low = mid + 1
else
high = mid - 1
return -1 // target not found
La routine renvoie l'indice de la cible en cas de succรจs et -1 si la valeur est absente. Comme la plage est divisรฉe par deux ร chaque itรฉration, la boucle s'exรฉcute au maximum logโ(n) fois.
Exemple de recherche binaire
Prenons l'exemple d'un dictionnaire. Si vous avez besoin de trouver un certain mot, personne ne parcourt chaque mot de maniรจre sรฉquentielle mais localise au hasard les mots les plus proches pour rechercher le mot requis.
L'image ci-dessus illustre ce qui suit :
- Vous disposez d'un tableau de 10 chiffres et l'รฉlรฉment 59 doit รชtre trouvรฉ.
- Chaque รฉlรฉment est indexรฉ de 0 ร 9. On calcule ensuite la valeur centrale du tableau. Pour cela, on divise les valeurs extrรชmes de l'indice par 2. Le rรฉsultat est 4.5, mais on arrondit ร l'entier infรฉrieur. La valeur centrale est donc 4.
- L'algorithme supprime tous les รฉlรฉments du milieu (4) jusqu'ร la limite infรฉrieure, car 59 est supรฉrieur ร 24, et il ne reste plus que 5 รฉlรฉments dans le tableau.
- Or, 59 est supรฉrieur ร 45 et infรฉrieur ร 63. La valeur mรฉdiane est 7. Par consรฉquent, la valeur de l'indice de droite devient mรฉdiane โ 1, ce qui est รฉgal ร 6, et la valeur de l'indice de gauche reste la mรชme qu'auparavant, soit 5.
- ร ce stade, vous savez que 59 vient aprรจs 45. Par consรฉquent, lโindex de gauche, qui est 5, devient รฉgalement mรฉdian.
- Ces itรฉrations se poursuivent jusqu'ร ce que le tableau soit rรฉduit ร un seul รฉlรฉment ou que l'รฉlรฉment ร trouver devienne le milieu du tableau.
Exemple 2
Prenons l'exemple suivant pour comprendre le fonctionnement de la recherche binaire.
- Vous disposez dโun tableau de valeurs triรฉes allant de 2 ร 20 et devez en localiser 18.
- La moyenne des limites infรฉrieure et supรฉrieure est (l + r) / 2 = 4. La valeur recherchรฉe est supรฉrieure ร la mรฉdiane, qui est 4.
- Les valeurs du tableau infรฉrieures ร la valeur mรฉdiane sont supprimรฉes de la recherche, et les valeurs supรฉrieures ร la valeur mรฉdiane 4 sont recherchรฉes.
- Il s'agit d'un processus de division rรฉcurrent jusqu'ร ce que l'รฉlรฉment ร rechercher soit trouvรฉ.
Pourquoi avons-nous besoin dโune recherche binaire ?
Les raisons suivantes font de la recherche binaire un meilleur choix en tant qu'algorithme de recherche :
- La recherche binaire fonctionne efficacement sur des donnรฉes triรฉes, quelle que soit la taille des donnรฉes.
- Au lieu d'effectuer la recherche en parcourant les donnรฉes dans une sรฉquence, l'algorithme binaire accรจde de maniรจre alรฉatoire aux donnรฉes pour trouver l'รฉlรฉment requis. Cela rend les cycles de recherche plus courts et plus prรฉcis.
- La recherche binaire effectue des comparaisons de donnรฉes triรฉes en fonction d'un principe d'ordre plutรดt qu'en utilisant des comparaisons d'รฉgalitรฉ, qui sont plus lentes et gรฉnรฉralement imprรฉcises.
- Aprรจs chaque cycle de recherche, l'algorithme divise la taille du tableau en deux ; par consรฉquent, ร l'itรฉration suivante, il ne travaillera que sur la moitiรฉ restante du tableau.
Dรฉcouvrez notre prochain tutoriel sur Recherche linรฉaire : Python, C++ Exemple.
Recherche binaire vs recherche linรฉaire
La recherche binaire et la recherche linรฉaire sont les deux mรฉthodes les plus courantes pour trouver une valeur dans une collection. Le tableau ci-dessous met en รฉvidence leurs diffรฉrences :
| Aspect | Recherche binaire | Recherche linรฉaire |
|---|---|---|
| Exigences en matiรจre de donnรฉes | Nรฉcessite des donnรฉes triรฉes | Fonctionne sur des donnรฉes triรฉes ou non triรฉes |
| Mรฉthode | Rรฉduit de moitiรฉ la portรฉe de recherche ร chaque รฉtape | Vรฉrifie chaque รฉlรฉment dans la sรฉquence |
| Complexitรฉ temporelle | O (log n) | O (n) |
| Meilleur pour | Grands ensembles de donnรฉes triรฉs | Petits ensembles de donnรฉes ou non triรฉs |
En rรฉsumรฉ, la recherche binaire est beaucoup plus rapide sur de grands volumes de donnรฉes triรฉes, tandis que la recherche linรฉaire est plus simple et la seule option lorsque les donnรฉes ne sont pas triรฉes.



