Binäre Suche Python

Eine binäre Python-Suche findet die Position eines Elements in einem sortierten Array. Es teilt eine Liste in zwei Hälften. Wenn ein angegebener Wert höher als die mittlere Zahl ist, konzentriert sich die Suche auf die rechte Seite der Liste. Andernfalls wird nach der Nummer links in der Liste gesucht.

Wie finden Sie die Position eines Elements in einer Liste? Binäre Suchen haben Sie hinter sich. Durch binäre Suchen können Sie die Position eines Elements innerhalb eines sortierten Arrays leicht finden.

Computer sind gut darin, Listen zu durchsuchen, um ein bestimmtes Element zu finden. Die Regeln, die Computer verwenden, um Elemente in einer Liste zu finden, werden als Suchalgorithmen bezeichnet. Einer der beliebtesten Python-Algorithmen ist die binäre Suche.

In diesem Leitfaden werden wir diskutieren, was bin√§re Suchen sind und wie sie arbeiten. Wir werden ein Beispiel fur eine bin√§re Suche in Python durchgehen, damit Sie lernen, wie Sie eine in Ihre Programme schreiben. Los geht’s!

Was ist eine Python-Binärsuche?

Eine Python-Binärsuche ist ein Algorithmus, der die Position eines Elements in einem geordneten Array findet. Binäre Suchen teilen eine Liste immer wieder in zwei Hälften. Dann vergleicht eine Suche, ob ein Wert höher oder niedriger als der mittlere Wert in der Liste ist.

Es gibt zwei Möglichkeiten, eine binäre Suche durchzufuhren. Beide Ansätze setzen Zeiger, die verwendet werden, um die höchsten und niedrigsten Positionen an einem bestimmten Punkt in einem Array zu verfolgen.

Der erste Ansatz, den Sie verwenden können, ist die iterative Methode. Bei diesem Ansatz werden mehrere Anweisungen wiederholt, um die Position eines Elements in einem Array zu bestimmen. In Python verwenden wir zu diesem Zweck eine while-Schleife.

Der andere Ansatz ist die rekursive Methode. Hier schreiben Sie eine Funktion, die sich immer wieder selbst aufruft, bis ein Element in einer Liste gefunden wird. Die rekursive Methode verwendet den zuvor besprochenen Teilungs-und-Herrsche-Ansatz und wiederholt den Suchprozess, bis ein Element gefunden wird.

81 % der Teilnehmer gaben an, dass sie sich nach dem Besuch eines Bootcamps hinsichtlich ihrer Berufsaussichten im Tech-Bereich sicherer fuhlten . Holen Sie sich noch heute ein Bootcamp zusammen.

Der durchschnittliche Bootcamp-Absolvent verbrachte weniger als sechs Monate im Karriereubergang, vom Beginn eines Bootcamps bis zur Suche nach seinem ersten Job.

Mit all dem Gerede uber das Teilen und Eroberung und Rekursion kann es leicht sein, den Überblick daruber zu verlieren, wie eine binäre Suche genau funktioniert. Aus diesem Grund gehen wir gleich auf ein Beispiel fur die Funktionsweise der binären Suche ein. Betrachten Sie die folgende Liste:

79142234

Wir suchen nach der Zahl "22‚" in unserer Liste.

Zunächst werden wir zwei Zeiger in unsere Listen setzen. Ein Zeiger spiegelt den höchsten Wert in der Liste wider, der andere den niedrigsten Wert:

< /table>

Unser nächster Schritt besteht darin, das mittlere Element im Array zu finden, das 14 ist. Wenn dieser Wert dem Wert entspricht, nach dem wir suchen, sollte dieser Wert zuruckgegeben werden.

In diesem Fall ist 14 nicht gleich 22. Unser Programm muss also einen Vergleich durchfuhren.

Wir werden die Zahl, nach der wir suchen, mit dem mittleren Element der Elemente auf der rechten Seite des aktuellen mittleren Elements vergleichen. Dies tun wir nur, wenn die Zahl, nach der wir suchen größer als die mittlere Zahl ist. Andernfalls vergleichen wir das Element mit dem mittleren Element auf der linken Seite des aktuellen mittleren Elements.

Die Zahl 22 ist größer als 14. Unser Programm beginnt mit dem Vergleich von 22 zum mittleren Element auf der rechten Seite unseres aktuellen mittleren Elements (14). In diesem Fall ist diese Zahl 22. Dies ist gleich der Zahl, nach der wir suchen.

Wir haben unsere gefunden mittleren Wert. Unser Programm gibt nun die Indexposition dieser Zahl zuruck. In diesem Fall ist die Indexposition von 22 3 (denken Sie daran, Listen werden beginnend bei 0 indiziert!).

So implementieren Sie eine Binärdatei Suche in Python

Let&rsq uo;s machen sich mit Python-Code die Hände schmutzig. Wir werden eine Python-Implementierung einer binären Suche unter Verwendung der beiden zuvor besprochenen Ansätze untersuchen: der iterativen und der rekursiven Methode.

Iterative binäre Suche in Python

Wir’ Beginnen Sie mit der iterativen Methode. Hier werden wir jedes Element in unserer Liste durchgehen. Dann finden wir den mittleren Wert in der Liste. Wir werden dies so lange tun, bis wir den gesuchten Wert gefunden haben.

Binäre Suchfunktion

Beginnen wir mit der Definition eines Python-Funktion fur unsere binäre Suche:

Unsere Funktion akzeptiert zwei Parameter: die Liste, die wir durchsuchen möchten, und die Zahl, die wir finden möchten in unsere Liste.

Wir haben dann zwei Python-Variablen deklariert, die die Standardwerte fur den niedrigsten und den höchsten Wert in der Liste speichern. low wird auf 0 gesetzt, was der Anfangsindexwert in der Liste ist. high wird auf die Länge der Liste gesetzt m inus one (weil Listen von null an indiziert werden).

Unser nächster Schritt war die Deklaration einer Python while-Schleife. Diese Schleife wird ausgefuhrt, während das niedrigste Element kleiner oder gleich der höchsten Zahl ist. Das bedeutet, dass unsere Schleife nur läuft, wenn unsere Zahl noch nicht gefunden wurde.

Dann berechnen wir die mittlere Zahl. Dazu ziehen wir den niedrigsten Wert vom höchsten Wert ab. Wir berechnen dann den Modulo (Rest) dieser Zahl, wenn sie durch 2 geteilt wird. Dann addieren wir den Modulo zum Wert der niedrigsten Zahl.

Wenn die mittlere Zahl in unserer Liste mit der Zahl ubereinstimmt die wir finden möchten, geben wir die Position dieser Zahl zuruck.

Wir setzen unseren neuen "niedrigen‚" Zahl gleich eins gr√∂√üer als die mittlere Position sein. Dies geschieht, wenn die mittlere Zahl kleiner ist als die Zahl, die wir finden m√∂chten. Dies verschiebt unsere Suche nach unten auf die linke Seite unserer Liste, wie wir es zuvor in unserem visuellen Beispiel getan haben.

Andernfalls setzen wir unsere "hohe‚"-Zahl auf eins weniger als die mittlere Position. Dadurch wird unsere Suche auf die rechte Seite unserer Liste verschoben.

" Karriere Karma trat in mein Leben ein, als ich es am dringendsten brauchte und half mir schnell bei einem Bootcamp. Zwei Monate nach meinem Abschluss habe ich meinen Traumjob gefunden, der meinen Werten und Lebenszielen entspricht!"

Venus, Software Engineer bei Rockbot

Dies wird wiederholt, bis niedrig gleich oder kleiner als hoch ist. Wenn unser Wert nicht gefunden wird, geben wir -1 zuruck. Wir werden in einer Minute daruber sprechen, warum.

Fuhren Sie die Suche aus

Fugen Sie den folgenden Code am Ende Ihres Programms außerhalb der Funktion findValue hinzu:

Wir haben damit begonnen, die Liste zu deklarieren der Elemente, die wir durchsuchen möchten. Dann haben wir die Zahl angegeben, die wir finden möchten, nämlich 22.

Als nächstes rufen wir unsere findValue()-Funktion auf a nd die Liste durchgehen.

Hier kommt die -1 von vorhin. Wenn die von unserer Funktion zuruckgegebene Zahl -1 ist, bedeutet dies, dass unser Artikel nicht in der Liste gefunden wurde. Programmierer verwenden in solchen Situationen oft -1, weil unsere Suchfunktion keine negative Zahl zuruckgeben kann.

Andernfalls gibt unser Programm eine Nachricht aus, die uns die Indexposition dieses Werts mitteilt.

Unser Code gibt Folgendes zuruck:

Jetzt wissen wir, dass die Zahl 22 an der Indexposition 3 erscheint.

Rekursive binäre Suche in Python

Wir können auch Rekursion verwenden, um eine binäre Suche durchzufuhren. Hier definieren wir eine Funktion, die sich solange selbst aufruft, bis eine Bedingung – unsere Nummer wird gefunden – erfullt ist.

Definieren Sie eine rekursive Funktion

Wie in unserem letzten Beispiel beginnen wir damit, eine Funktion zu schreiben, die unsere binäre Suche durchfuhrt:

Unser Code ist etwas ähnlich unserem letzten Beispiel.

Wir beginnen damit, dass wir prufen, ob der höchste Wert größer oder gleich niedrig ist. Wenn dies der Fall ist, gibt unser Programm -1 zuruck. Andernfalls wird eine binäre Suche gestartet.

Wir berechnen die mittlere Zahl mit dem gleichen Ansatz wie im letzten Beispiel. Zuerst ziehen wir den niedrigsten vom höchsten Wert ab. Dann berechnen wir den Modulo (Rest) dieses Wertes, wenn er durch 2 geteilt wird. Schließlich addieren wir die niedrigste Zahl.

Wir haben dann eine if-Anweisung geschrieben, die entscheidet, wie unsere binäre Suche sollte fortfahren:

  • Wenn die mittlere Zahl der gesuchten Zahl entspricht, wird die Position dieser Zahl zuruckgegeben.
  • Wenn die mittlere Zahl ist kleiner als der gesuchte ist, wird unsere Funktion findValue() erneut aufgerufen. Diesmal wird der Wert von low auf einen Wert gr√∂√üer als unser mittlerer Wert gesetzt.
  • Wenn der mittlere Wert gr√∂√üer als der gesuchte ist, wird der < Die Funktion em>findValue() wird aufgerufen. Der Wert von "hoch‚" ist um eins kleiner als der mittlere Wert.

Schreibe das Hauptprogramm

Wir mussen nur noch unser Hauptprogramm schreiben:

Unser Hauptprogramm ist das gleiche wie unser fruheres Beispiel, bis auf einen Unterschied. Wir ubergeben zwei neue Parameter an unsere Funktion findValue(): low und high.

Wir mussen dies tun, weil unser Algorithmus rekursiv ist und wir diese Werte in unserer Funktion nicht zuweisen können. Wenn wir die Werte in unserer Funktion zuweisen, wurden diese Werte jedes Mal zuruckgesetzt, wenn unsere Funktion ausgefuhrt wird, was Brechen Sie unseren Suchalgorithmus.

Unser Code gibt Folgendes zuruck:

Wir haben das gleiche Ergebnis von vorhin erhalten. In diesem Beispiel haben wir ein rekursives Programm anstelle eines iterativen Programms verwendet, um unsere binäre Suche durchzufuhren.

Wann sollten Sie eine binäre Python-Suche verwenden?

Eine binäre Suche ist eine effiziente Möglichkeit, eine Liste von Nummern zu durchsuchen. Diese Suche ist effizienter als eine lineare Suche. Dies liegt daran, dass die binäre Methode Ihre Suche auf die Hälfte reduziert, sobald Sie die Mitte einer sortierten Liste finden.

Es ist wichtig zu beachten, dass eine Liste numerisch geordnet sein muss, bevor sie mit durchsucht werden kann eine binäre Suche. Stellen Sie vor der Durchfuhrung einer binären Suche sicher, dass Ihre Zahlen in aufsteigender Reihenfolge sortiert sind.

Binäre Suche in Python-Komplexitätsaufschlusselung

Wie komplex ist eine binäre Suche? Das ist eine gute Frage.

Der binäre Suchalgorithmus hat im besten Fall eine Komplexität von O(1). Dies tritt auf, wenn der erste Vergleich dem gesuchten Element entspricht.

Die durchschnittliche und die Worst-Case-Komplexität fur eine binäre Suche beträgt O(log n). Dies bedeutet, dass die Dauer einer Suche logarithmisch ansteigt, je nachdem, wie viele Elemente in einer Liste zu durchsuchen sind.

Schlussfolgerung

Binäre Suchen sind ein effizienter Weg um die Indexposition eines Wertes in einer Liste zu finden.

Jedes Mal, wenn eine binäre Suche ausgefuhrt wird, teilt die Suche die Liste in zwei Teile. Die Suche konzentriert sich auf die Seite der Liste, die der gesuchten Nummer am nächsten liegt.

Bei jeder Ausfuhrung der Suche wird die Anzahl der zu durchsuchenden Nummern halbiert.

p>

Um mehr uber Python zu erfahren, lesen Sie unseren Leitfaden zum Erlernen von Python.

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method

Niedrig


Hoch
79142234