Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die binäre Suche mit Python

So implementieren Sie die binäre Suche mit Python

WBOY
WBOYnach vorne
2023-05-11 10:40:053211Durchsuche

Erstellen Sie zunächst eine Funktion namens „binary_search“: Übergeben Sie zwei Parameter, die Liste der Elemente und den Wert, den Sie suchen möchten.

def binary_search(_list, value):

Als nächstes definieren Sie die erforderlichen Variablen innerhalb der Funktion. Der Schlüssel zur Dichotomie besteht darin, von der Mitte der Liste nach beiden Seiten zu suchen (der Ausdruck ist möglicherweise nicht streng, aber das ist es, was er bedeutet). Intuition, definiere links, rechts, Mitte. Drei Variablen repräsentieren: den Startindex, den Endindex und den mittleren Index der Liste.

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

Der nächste Schritt besteht darin, den Schlüsselteil der binären Suche zu implementieren. Definieren Sie zunächst eine While-Schleife, damit die Suche reibungslos ablaufen kann. Es gibt drei Situationen:

1. _list[mid] == value: Der Zwischenwert ist zufällig der Wert, den wir finden müssen, also geben Sie einfach den entsprechenden Index direkt zurück.

2. _list[mid] > Wert: Der zu findende Wert befindet sich auf der linken Seite von mid, um den Suchbereich einzugrenzen.

3._list[mid]

Aktualisieren Sie abschließend den Wert von mid, um die nächste Suchrunde zu starten, und verwenden Sie die while-else-Anweisung, um zu beurteilen, ob er nicht gefunden wird, und geben Sie einen Rückgabewert an.

    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

Abschließend sind der vollständige Code und die Testlaufleistung wie folgt:

""" 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)))

Laufergebnisse:

So implementieren Sie die binäre Suche mit Python

Wenn kein Wert gefunden werden kann:

So implementieren Sie die binäre Suche mit Python

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die binäre Suche mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen