Python binäre Suche

Python binäre Suche
In diesem Artikel wird angezeigt, wie Sie mit Python eine binäre Suchtechnik ausführen, um die Indexposition eines Unternehmens in einer Liste zu finden.

Eine binäre Suche ist eine Möglichkeit, ein bestimmtes Element in einer Liste zu finden. Stellen wir uns vor. Wir können schnell den Indexstandort eines Elements mit der binären Suchtechnik finden. Es gibt andere Suchalgorithmen. Sortieren Sie zuerst die Objekte, wenn sie noch nicht sortiert wurden.

Die rekursiven und iterativen Ansätze des binären Suchalgorithmus können verwendet werden, um die Elementposition zu finden. Die rekursive Strategie wird nach der Kluft und des Eroberungsansatzes verwendet. Auf diese Weise wird eine Funktion durchgeführt, bis sie ein Element in der Liste findet. Um den Indexspeicherort eines Elements zu entdecken, wiederholt die iterative Technik wiederholt eine Reihe von Wörtern. Dieser Prozess wird mit der while -Schleife durchgeführt. Da wir nicht jeden Listenindex durchsuchen müssen, ist die binäre Suche effizienter als die lineare Suche.

Beginnen wir mit einem grundlegenden Verständnis der binären Suche.

Beispiel 1:

Zunächst verwenden wir den iterativen Ansatz, um eine binäre Suche zu implementieren. Wir werden die Liste durchlaufen und eine Abfolge von Aussagen wiederholen. Wir werden weiter nach dem Mittelwert suchen, bis wir ihn finden.

Dies ist eine Python -Implementierung des iterativen binären Suchfunktionsansatzes. Wenn in der angegebenen Liste 'Search_num' vorhanden ist, gibt es einen zurück. Ansonsten gibt es -1. Wir haben die Binary Search () -Funktion in diesem Programm konstruiert, die zwei Argumente akzeptiert: eine Liste zur Sortierung und eine Nummer zum Suchen. Wir haben zwei Variablen eingerichtet, um die niedrigsten und größten Werte der Liste zu verfolgen. Das Tief hat einen Startwert von 0, das Hoch hat einen Wert von Len (List1) - 1 und die Mitte hat einen Wert von 0. Die while -Schleife wird dann mit der Einschränkung geschrieben, dass der niedrigste gleich ist und kleiner als der höchste ist. Die while -Schleife wird iteriert, wenn die Zahl noch nicht gefunden wurde. Der Mittelpunkt befindet sich in der WHOR -Schleife. Dann stimmen wir mit dem Indexwert der Nummer überein, nach denen wir gesucht haben. Wenn der Wert des mittleren Index geringer ist als "Suchnummer", weisen wir ihn zu und erhöhen den Mid-Index-Wert um eins. Der Fokus der Suche ändert sich links. Stellen Sie den mittleren Wert auf das Maximum ein, wenn er hoch ist. Mitte zurückgeben, wenn das 'Search_num' gleich dem mittleren Wert ist. Dies wird so lange dauern, bis das Tief und die Hoch gleich sind und das Tiefer kleiner als das Hoch ist. Wenn wir am Ende der Funktion gelangen, wissen wir, dass das Element nicht in der Liste steht. Zur Aufruffunktion geben wir -1 zurück.

Def Binary_search (eins, Search_num):
niedrig = 0
hoch = len (eins) - 1
Mid = 0
während niedrig <= high:
Mid = (hoch + niedrig) // 2
Wenn man [Mid] Search_num:
hoch = Mitte - 1
anders:
Mitte zurückkehren
Rückkehr -1
eins = [19, 23, 43, 56, 65, 71, 80]
Search_num = 43
output = Binary_search (eins, Search_num)
Wenn Ausgabe != -1:
print ("Element ist bei Index", str (Ausgabe))
anders:
print ("Element ist in der Liste nicht verfügbar"))

Hier sehen Sie, dass die erforderliche Zahl an der Indexposition 2 gefunden wird.

Beispiel 2:

Schauen wir uns den rekursiven binären Suchansatz an. Der Rekursionsansatz kann bei der binären Suche verwendet werden. Wir werden eine rekursive Funktion machen, die sich selbst aufruft, bis die Bedingung erfüllt ist. Das vorhergehende Programm ähnelt dem zuvor. Eine rekursive Funktion sowie ihre Grundbedingung wurden deklariert. Wir berechnen die mittlere Nummer wie im vorherigen Programm. Um mit der binären Suche fortzufahren, haben wir die IF -Anweisung verwendet. Es wird zurückgegeben, wenn der mittlere Wert der Nummer entspricht, die wir suchen. Wenn der mittlere Wert unter dem Wert liegt, erhöhen wir ihn um eins und weisen mit unserer rekursiven Binär -Search (). Wir haben unser Hauptprogramm im letzten Abschnitt geschrieben. Die Binary Search () -Ver Prozedur erfordert nun 2 Parameter, was die einzige Änderung aus dem vorherigen Programm ist. Die Unfähigkeit der rekursiven Funktion, Startwerte dem niedrigen, hohen und mittleren Grund dafür zuzuweisen, ist der Grund dafür. Der Wert für diese Variablen wird jedes Mal zurückgesetzt, wenn die Rekursion aufgerufen wird.

Def Binary_search (eins, niedrig, hoch, such_num):
Wenn niedrig such_num:
Rückgabe binary_search (eins, niedrig, Mitte - 1, Search_num)
anders:
Rückgabe binary_search (eins, Mid + 1, High, Search_num)
anders:
Rückkehr -1
eins = [19, 23, 43, 56, 65, 71, 80]
Search_num = 65
output = Binary_search (eins, 0, len (eins) -1, Search_num)
Wenn suche_num != -1:
print ("Element ist bei Index", str (Ausgabe))
anders:
print ("Element ist in der Liste nicht verfügbar"))

Der erforderliche Wert ist bei Index 4, wie Sie im folgenden Bild sehen können.

Beispiel 3:

Ein weiteres Beispiel für eine binäre Suchtechnik, die allgemein als ein halb-intervaler Suchalgorithmus bezeichnet wird, wird verwendet, um einen Zielwert in einem sortierten Array zu lokalisieren. Dieses Programm gibt true zurück, wenn sich die Nummer in der Liste befindet.

Def Binary_search (my_list, search_num):
eins = 0
final = len (my_list) -1
gefunden = falsch
während (einer<=final and not found):
Mid = (ein + endgültig) // 2
Wenn my_list [Mid] == Search_num:
gefunden = wahr
anders:
Wenn suche_numFinale = Mid - 1
anders:
eins = MID + 1
Rückkehr gefunden
print (binary_search ([1,2,3,4,5], 3))
print (binary_search ([11,22,33,44,55], 5))

Unten ist die Ausgabe.

Abschluss:

Der effektivste und schnellste Ansatz zur Suche nach einem Eintrag in einer Liste besteht darin, einen binären Suchalgorithmus zu verwenden. Es überspringt die bedeutungslose Analogie. Wie der Name sagt, ist die Suche in zwei Teile unterteilt. Es konzentriert sich auf die Seite der Liste, die der Nummer am nächsten liegt, die wir suchen. In der besten Situation ist die Komplexität des binären Suchalgorithmus o (1). Dies tritt auf, wenn das von uns gesuchte Element im ersten Vergleich erscheint. Die schlimmste und durchschnittliche Fallkomplexität der binären Suche ist O (logn). Die Gesamtzahl der Suchvorgänge, die zum Auffinden des Elements erforderlich sind. Unterschiedliche Ansätze zur Bestimmung der Indexposition einer bestimmten Zahl wurden diskutiert.