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.

  • ???? Donnรฉes triรฉes : La recherche binaire ne fonctionne que sur une liste d'รฉlรฉments triรฉe.
  • (I.e. Rรฉduire de moitiรฉ : Chaque รฉtape compare la cible avec la valeur mรฉdiane et รฉlimine la moitiรฉ de la plage.
  • | Logarithmique : La recherche s'exรฉcute en temps O(log n), beaucoup plus rapidement qu'une recherche linรฉaire.
  • (I.e. Index mรฉdian : Le milieu se trouve en divisant par deux la partie entiรจre de (gauche + droite).
  • (I.e. Itรฉratif: Le processus se rรฉpรจte jusqu'ร  ce que l'รฉlรฉment soit trouvรฉ ou que la plage soit vide.

Algorithme de recherche binaire avec exemple

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.

Exemple de recherche binaire

L'image ci-dessus illustre ce qui suit :

  1. Vous disposez d'un tableau de 10 chiffres et l'รฉlรฉment 59 doit รชtre trouvรฉ.
  2. 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.
  3. 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.
  4. 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.
  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.
  6. 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.

Exemple de recherche binaire

  1. Vous disposez dโ€™un tableau de valeurs triรฉes allant de 2 ร  20 et devez en localiser 18.
  2. 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.
  3. 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.
  4. 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.

FAQ

La recherche binaire permet des recherches rapides dans les structures triรฉes sous-jacentes aux systรจmes d'IA, comme la recherche de seuils, l'optimisation d'hyperparamรจtres sur une plage donnรฉe ou la localisation d'une valeur dans un index triรฉ d'embeddings. Sa complexitรฉ en O(log n) garantit l'efficacitรฉ de ces recherches.

Oui. Les assistants IA peuvent effectuer des recherches binaires itรฉratives ou rรฉcursives. Python, Java, C++ ร€ partir d'une description simple, soyez vigilant face aux erreurs classiques de dรฉcalage d'une unitรฉ et de dรฉpassement de capacitรฉ lors du calcul de l'indice mรฉdian, et effectuez des tests avec des cas limites.

La recherche binaire s'exรฉcute en O(log n) car elle divise par deux l'intervalle de recherche ร  chaque comparaison. Sa complexitรฉ spatiale est O(1) pour la version itรฉrative et O(log n) pour la version rรฉcursive en raison de la pile d'appels.

Non. La recherche binaire nรฉcessite que les donnรฉes soient triรฉes pour dรฉterminer quelle moitiรฉ รฉliminer. Avec des donnรฉes non triรฉes, il faut d'abord les trier ou utiliser la recherche linรฉaire, qui examine chaque รฉlรฉment sรฉquentiellement.

Rรฉsumez cet article avec :