Binäre Suche (Bisektion) in Python mit expliziter Elementpräsenzprüfung
Das Python-bisect-Modul bietet Funktionen zur Durchführung einer binären Suche, wie z. B. bisect_left und bisect_right. Diese Funktionen geben jedoch auch dann eine Position zurück, wenn das gesuchte Element nicht in der Liste vorhanden ist. Für Fälle, in denen nur das Vorhandensein oder Fehlen eines Elements erwünscht ist, ist eine explizitere Prüfung erforderlich.
Ein Ansatz besteht darin, bisect_left zu verwenden und zu überprüfen, ob das Element an der zurückgegebenen Position mit dem Ziel übereinstimmt. Allerdings führt diese Methode zu zusätzlicher Komplexität, wie z. B. einer Grenzprüfung für Fälle, in denen das Ziel größer als das größte Element in der Liste ist.
Eine einfachere und direktere Lösung besteht darin, eine benutzerdefinierte binäre Suchfunktion zu implementieren, die explizit prüft für das Vorhandensein des Artikels, bevor das Ergebnis zurückgegeben wird. Hier ist ein Beispiel:
from bisect import bisect_left def binary_search(a, x, lo=0, hi=None): if hi is None: hi = len(a) pos = bisect_left(a, x, lo, hi) # find insertion position return pos if pos != hi and a[pos] == x else -1 # don't walk off the end
Diese Funktion benötigt eine sortierte Liste a, einen Zielwert x und optionale Unter- und Obergrenzen für die Suche. Es verwendet bisect_left, um den Einfügepunkt für x zu finden, und prüft dann, ob das Element an dieser Position mit dem Ziel übereinstimmt. Wenn eine Übereinstimmung gefunden wird, gibt die Funktion die Position zurück; andernfalls wird -1 zurückgegeben, um die Abwesenheit des Elements anzugeben.
Durch die Integration dieser expliziten Prüfung können Sie das Vorhandensein oder Fehlen eines Elements in einer sortierten Liste effizient ermitteln, ohne unnötigen Aufwand oder Einschränkungen zu verursachen.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe der binären Suche in Python effizient prüfen, ob Elemente in einer sortierten Liste vorhanden sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!