Comment utiliser Python pour implémenter la recherche binaire

WBOY
Libérer: 2023-05-11 10:40:05
avant
3222 Les gens l'ont consulté

Tout d'abord, créez une fonction nommée binaire_search : passez deux paramètres, la liste des éléments et la valeur que vous souhaitez rechercher.

def binary_search(_list, value):
Copier après la connexion

Ensuite, définissez les variables requises à l'intérieur de la fonction. La clé de la dichotomie est de rechercher du milieu de la liste vers les deux côtés (l'expression n'est peut-être pas rigoureuse, mais c'est ce qu'elle signifie), donc pour le bien de intuition, définir gauche, droite, milieu Trois variables représentent : l'index de départ, l'index de fin et l'index du milieu de la liste.

    left = 0   # 列表的起始索引
    right = len(_list)   # 列表的结束索引
    mid = int((left + right)/2)  # 采用此方法,通过四舍五入刚好可以定位到列表的中间位置
Copier après la connexion

L'étape suivante consiste à implémenter la partie clé de la recherche binaire. Définissez d'abord une boucle while afin que la recherche puisse se dérouler sans problème. Si les instructions de branche sont imbriquées dans la fonction while pour implémenter le jugement conditionnel, il existe trois situations :

1. _list[mid] == value : La valeur intermédiaire se trouve être la valeur que nous devons trouver, il suffit donc de renvoyer directement l'index correspondant.

2. _list[mid] > value : La valeur à trouver se trouve sur le côté gauche de mid. Mettez à jour la valeur de right à mid pour affiner la plage de recherche.

3._list[mid] < value : La valeur à trouver se trouve sur le côté droit du milieu, mettez à jour la valeur de gauche vers le milieu et recherchez sur le côté droit du milieu.

Enfin, mettez à jour la valeur de mid pour lancer le prochain cycle de recherche. En même temps, utilisez l'instruction while-else pour juger de la situation où elle n'est pas trouvée et donnez une valeur de retour.

    while left < right:
        if _list[mid] == value:
            return mid
        elif _list[mid] > value:
            right = mid
        else:
            left = mid
        mid = int((right + left)/2)
    else:
        return -1
Copier après la connexion

Enfin, le code complet et les performances d'exécution des tests sont les suivants :

""" a demo realize binary search"""
 
 
def binary_search(_list, value):
    left = 0   # 列表的起始索引
    right = len(_list)   # 列表的结束索引
    mid = int((left + right)/2)  # 采用此方法,通过四舍五入刚好可以定位到列表的中间位置
    while left < right:
        if _list[mid] == value:
            return mid
        elif _list[mid] > value:
            right = mid
        else:
            left = mid
        mid = int((right + left)/2)
    else:
        return -1
 
 
index = "the index of value in the list: {}"
print(index.format(binary_search([1, 2, 3, 4, 5, 6, 7, 8, 9], 1)))
Copier après la connexion

Résultats d'exécution :

Comment utiliser Python pour implémenter la recherche binaire

Lorsqu'il n'y a aucune valeur à trouver :

Comment utiliser Python pour implémenter la recherche binaire

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:yisu.com
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