Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich mithilfe der binären Suche in Python effizient prüfen, ob Elemente in einer sortierten Liste vorhanden sind?

Wie kann ich mithilfe der binären Suche in Python effizient prüfen, ob Elemente in einer sortierten Liste vorhanden sind?

DDD
Freigeben: 2024-11-30 04:56:11
Original
291 Leute haben es durchsucht

How Can I Efficiently Check for Item Presence in a Sorted List Using Binary Search in Python?

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage