Recherche binaire python

Recherche binaire python
Cet article vous montrera comment utiliser Python pour effectuer une technique de recherche binaire pour localiser la position d'index d'une entité dans une liste.

Une recherche binaire est un moyen de trouver un certain élément dans une liste. Imaginons que nous ayons une liste de dix mille éléments et que nous devons trouver la position d'index d'une seule entrée. Nous pouvons trouver rapidement l'emplacement d'index d'un élément en utilisant la technique de recherche binaire. D'autres algorithmes de recherche existent, mais le plus largement utilisé est une recherche binaire. Trier les objets d'abord s'ils n'ont pas déjà été triés.

Les approches récursives et itératives de l'algorithme binaire peuvent être utilisées pour trouver la position de l'élément. La stratégie récursive est utilisée après l'approche de division et de conquête. De cette manière, une fonction est exécutée jusqu'à ce qu'elle trouve un élément dans la liste. Pour découvrir l'emplacement de l'index d'un élément, la technique itérative répète à plusieurs reprises un ensemble de mots. Ce processus est accompli en utilisant la boucle while. Parce que nous n'avons pas à rechercher chaque index de liste, la recherche binaire est plus efficace que la recherche linéaire.

Commençons par une compréhension de base de la recherche binaire.

Exemple 1:

Tout d'abord, nous utilisons l'approche itérative pour implémenter une recherche binaire. Nous allons parcourir la liste, répétant une séquence de déclarations. Nous continuerons à chercher la valeur centrale jusqu'à ce que nous le trouvons.

Ceci est une implémentation Python de l'approche de la fonction de recherche binaire itérative. Si «search_num» est présent dans la liste donnée, il en renvoie un; Sinon, il donne -1. Nous avons construit la fonction de recherche binaire () dans ce programme, qui accepte deux arguments: une liste à trier et un nombre à rechercher. Nous avons mis en place deux variables pour garder une trace des valeurs les plus basses et les plus grandes de la liste. Le bas a une valeur de départ de 0, le haut a une valeur de Len (list1) - 1, et le milieu a une valeur de 0. La boucle while est ensuite écrite avec la contrainte que le plus bas est égal et est plus petit que le plus élevé. La boucle while itérera si le nombre n'a pas encore été trouvé. Le point médian se trouve dans la boucle while. Ensuite, nous correspondons à la valeur d'index au nombre que nous recherchons. Si la valeur de l'indice à mi-index est inférieure à «Rechercher Num», nous l'affecterons et augmentons la valeur de l'index à mi-intention d'un. L'objectif de la recherche change vers la gauche. Réglez la valeur médiane sur le maximum si elle est élevée. RETOUR. Cela se poursuivra jusqu'à ce que les bas et les hauts soient égaux et que le faible est plus petit que le haut. Si nous arrivons à la fin de la fonction, nous savons que l'élément n'est pas dans la liste. À la fonction invoquante, nous retournons -1.

def binary_search (un, search_num):
bas = 0
élevé = len (un) - 1
mid = 0
bien que bas <= high:
mid = (élevé + bas) // 2
Si un [mid] search_num:
High = Mid - 1
autre:
Retour à mi-chemin
retour -1
un = [19, 23, 43, 56, 65, 71, 80]
search_num = 43
output = binary_search (un, search_num)
Si la sortie != -1:
print ("l'élément est à index", str (sortie))
autre:
imprimer ("l'élément n'est pas disponible dans la liste")

Ici, vous pouvez voir que le numéro requis est trouvé à la position d'index 2.

Exemple 2:

Regardons l'approche de recherche binaire récursive. L'approche de récursivité peut être utilisée dans la recherche binaire. Nous ferons une fonction récursive qui s'appelle jusqu'à ce que la condition soit satisfaite. Le programme précédent est similaire à celui qui avant. Une fonction récursive, ainsi que son état de base, ont été déclarées. Nous calculons le nombre central comme nous l'avons fait dans le programme précédent. Pour continuer avec la recherche binaire, nous avons utilisé l'instruction IF. Il sera retourné si la valeur médiane est équivalente au nombre que nous recherchons. Si la valeur médiane est inférieure à la valeur, nous l'augmenons en un et l'attribuons à faible en utilisant notre fonction de recherche binaire récursive (). Nous avons écrit notre programme principal dans la dernière section. La procédure Binary Search () nécessite désormais 2 paramètres, ce qui est la seule modification du programme précédent. L'incapacité de la fonction récursive pour attribuer des valeurs de départ aux basses, élevées et moyennes est la raison derrière cela. La valeur de ces variables sera réinitialisée chaque fois que la récursivité est appelée.

def binary_search (un, bas, haut, search_num):
Si Low Search_num:
return binary_search (un, bas, mi-1, search_num)
autre:
return binary_search (un, mid + 1, high, search_num)
autre:
retour -1
un = [19, 23, 43, 56, 65, 71, 80]
search_num = 65
output = binary_search (un, 0, len (un) -1, search_num)
Si search_num != -1:
print ("l'élément est à index", str (sortie))
autre:
imprimer ("l'élément n'est pas disponible dans la liste")

La valeur requise est à l'index 4, comme vous pouvez le voir dans l'image suivante.

Exemple 3:

Un autre exemple de technique de recherche binaire, communément appelé algorithme de recherche à demi-intervals, est utilisé pour localiser une valeur cible dans un tableau trié. Ce programme renvoie vrai si le numéro est situé dans la liste.

def binary_search (my_list, search_num):
un = 0
final = len (my_list) -1
trouvé = faux
tandis que (un<=final and not found):
mid = (un + final) // 2
Si my_list [mid] == search_num:
Trouvé = vrai
autre:
Si search_numFinal = Mid - 1
autre:
un = mid + 1
retour trouvé
print (binary_search ([1,2,3,4,5], 3))
print (binary_search ([11,22,33,44,55], 5))

Ci-dessous est la sortie.

Conclusion:

L'approche la plus efficace et la plus rapide pour rechercher une entrée dans une liste consiste à utiliser un algorithme de recherche binaire. Il saute sur l'analogie dénuée de sens. Comme son nom le dit, la recherche est divisée en deux pièces. Il se concentre sur le côté de la liste le plus proche du nombre que nous recherchons. Dans la meilleure situation, la complexité de l'algorithme de recherche binaire est O (1). Cela se produit lorsque l'élément que nous recherchons apparaît dans la première comparaison. La pire et la complexité de cas moyenne de la recherche binaire est O (Logn). Le nombre total de recherches requises pour localiser l'élément détermine ce. Différentes approches pour déterminer la position d'index d'un nombre donné ont été discutées.