Die meisten grundlegenden Array – Python | Suman Datta | Skillshare

Playback-Geschwindigkeit


1.0x


  • 0.5x
  • 0.75x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Die meisten grundlegenden Array – Python

teacher avatar Suman Datta, just a coder

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Einführung

      1:37

    • 2.

      Array – eine einfache Einführung

      8:25

    • 3.

      Array

      9:31

    • 4.

      Python-Programm für Array

      5:21

    • 5.

      Binary

      12:25

    • 6.

      Python-Programm der Binärsuche

      7:05

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

18

Teilnehmer:innen

--

Projekt

Über diesen Kurs

Alle angehenden Programmierer:innen – dieser Kurs wird dir die innere Arbeit einiger der grundlegenden Algorithmen vorstellen. Die Entwicklung eines Algorithmus von Grund auf offensichtlich zeigt eine ganze Reihe interner Details, die sonst nicht offensichtlich sind. Bei der Programmierung geht es sehr darum, diese Details zu bewältigen. Dieser Kurs befasst sich mit einfachen und bekannten Algorithmen, die an einer Reihe von Zahlen arbeiten. Ziel ist es, die Ziele dieser grundlegenden Algorithmen deutlich zu erkennen, was unter die Kapuze geht. Diese Details zu kennen ist ein Muss, um ein selbstbewusster Programmierer zu werden.

Ich bin Suman Datta, ein Quantitativer Finanzberater mit mehr als 20 Jahren Erfahrung in der Hands-on-Programmierung und Software-Design in Bereichen wie quantitativer Modellierung, statistischer Programmierung und Datenwissenschaft.

Triff deine:n Kursleiter:in

Teacher Profile Image

Suman Datta

just a coder

Kursleiter:in

Skills dieses Kurses

Entwicklung Programmiersprachen Python
Level: All Levels

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. Einführung: Hallo zusammen. Willkommen zu diesem Kurs über die meisten grundlegenden Algorithmen. In diesem Kurs erhalten Sie praktische Lektionen zur Implementierung einiger der grundlegendsten Algorithmen von Grund auf. Wenn Sie neu in der Programmierung sind oder ein erfahrener Programmierer sind, ist dieser Kurs hilfreich. Dies gibt Ihnen die Möglichkeit, zu den Grundlagen zurückzukehren und erneut wie die Grundlagen einiger der grundlegendsten Algorithmen zusammenpassen. Ich unterrichte in sehr einfacher Sprache, ohne Fachjargon. Zuerst wird die Logik auf Papier erklärt, und dann wird das Programm mit dem Tool PyCharm von Grund auf neu entwickelt . Sie benötigen einen Computer mit Internetverbindung. Und zu Anaconda und PyCharm der Software. Bitte nehmen Sie die Fersenbeinlänge für den Installationsvorgang. Sie sollten bereit sein , Programme in der PyCharm-Umgebung zu schreiben und auszuführen . Bevor Sie mit diesem Kurs beginnen. Am Ende beherrschen Sie diese grundlegenden Algorithmen und neue Programmierer werden Lust auf mehr Programmierung entwickeln . Danach folgen Lektionen zu einigen der grundlegendsten Algorithmen und die Implementierung von Grund auf neu. Hören hat einige einfache Manipulationen als Warm-up. Lektion 3.4 befasst sich mit binärer Suche und Partitionierung, sehr grundlegenden Algorithmen, wie Sie wissen. Schließlich haben wir bei weniger als fünf ein Klassenprojekt zur Implementierung des Quicksort-Algorithmus von Grund auf neu. Das ist alles. Ich freue mich darauf, euch alle dort zu sehen. 2. Array: Hallo zusammen. In dieser Lektion lernen wir einen sehr grundlegenden Datentyp , der mehrere Objekte zusammen speichern kann. Dies wird als Array bezeichnet. Ein Array ist ein Satz von Objekten nebeneinander im Computerspeicher gespeichert werden. In unserer Diskussion werden wir ganzzahlige Zahlen als Objekte nehmen. Nehmen wir ein Beispiel. Ist ein Array, das die Zahlen 289214 minus sechs in Python enthält. Und Array wird auch Liste genannt. Elemente werden nebeneinander im Speicher platziert. Die Position jedes Array-Elements wird als Index bezeichnet. Der Index beginnt bei Null. Das bedeutet, dass der Index des ersten Elements Null ist. Der Index des zweiten Elements ist eins, der Index des dritten Elements ist zwei usw. Auf diese Weise ist der Index des letzten Elements um eins kleiner als die Gesamtlänge des Arrays. In dem angegebenen Array gibt es also fünf Elemente und die Indizes sind 01234. Mal sehen, wie wir auf jedes Element eines bestimmten Arrays zugreifen und die Zahlen drucken können . In Python. Druckfunktion wird zum Drucken verwendet. Druckfunktion kann das gesamte addierte Ergebnis in einem Aufruf dieser Funktion drucken . Das heißt, die Druckfunktion kennt die interne Struktur des Arrays. Um auf jedes Element des Arrays zugreifen zu können, müssen wir das Array mit einer for-Schleife durchqueren. Diese for-loop druckt jedes Element des Arrays. Die nächste for-Schleife durchläuft jeden Index des Arrays und gibt den Wert an diesem Index aus. Diese Schleife durchläuft jeden Index und die entsprechenden Werte gleichzeitig und druckt beide aus. Ich schlage vor, dass Sie mehr über diese beiden Funktionen, range und enumerate, erfahren, da sie beim Schreiben einer Schleife sehr praktisch sind. Als Nächstes implementieren wir einen Algorithmus um die laufende Summe eines Arrays von ganzen Zahlen zu berechnen. Was ist Running Sum? Summe für das Element eines Arrays ist die Summe aller Elemente von Null bis Pi. Nach dem Summieren erhalten wir also das obere Tal als laufende Summe des ursprünglichen Arrays. laufende Summe für das erste Element ist das Element selbst. laufende Summe für das zweite Element ist die Summe der ersten beiden Elemente. laufende Summe für das dritte Element ist die Summe von drei Elementen und so weiter. Wir mögen die Schritte in einfacher Sprache und versuchen Schritt für Schritt zu visualisieren , wie der Algorithmus ausgeführt wird. Versuchen wir, diesen Algorithmus zu visualisieren. Beginne mit einem Zeiger p am zweiten Element von a. Wir haben also einen Zeiger p. Lassen wir ihn auf das zweite Element zeigen, das a ist. Also hier ist p ein Zeiger, das heißt, er enthält den Wert Index des zweiten Elements, welches eins ist. Derzeit ist P also gleich Eins. Jetzt müssen wir den Wert bei p durch die Summe seines Wertes und des vorherigen Werts ersetzen . Das heißt, wir ersetzen acht durch acht plus zwei, was zehn ist. Dann gehen wir einen Schritt vorwärts und machen dasselbe. Das heißt, ersetzen Sie 91 durch 91 plus zehn, was 101 entspricht. Jetzt gehen wir einen Schritt vorwärts. Es spielt den Wert für mit der Summe von 4,101 ab, was 105 entspricht. Und wir machen genauso weiter. Bewegen Sie B also um einen Schritt vorwärts und ersetzen Sie den aktuellen Wert, der minus sechs ist , durch minus sechs plus 105, was 99 ist. Und wir haben das Ende des Arrays erreicht. Also hört der Algorithmus hier auf. Auf diese Weise können wir die laufende Summe eines bestimmten Arrays von Zahlen finden . Beachten Sie, dass wir keine neue LEA erstellt haben , um diese laufende Summe zu finden Wir haben jedes Array-Element durch das entsprechende laufende Element ersetzt . Als nächstes werden wir versuchen, das bei beliebigem umzukehren, das heißt, bei einem Array, sagen wir 289214 minus sechs, werden wir die Reihenfolge der Elemente in diesem Array umkehren. Nach dem Umkehren wird das Array zu minus 6492182. Wählen wir den Algorithmus im Klartext aus. Also setzen wir zuerst zwei Zeiger auf das erste und letzte Element des Arrays, CPS und PE. Wir haben also PAs und PE. Dann müssen wir die Werte von P, S & P tauschen und dann um einen Schritt vorwärts und PE um einen Schritt rückwärts gehen. Das heißt, wir bewegen P, S & P um jeweils einen Schritt aufeinander zu. Und wir müssen diese einstufige Bewegung von jedem machen und die entsprechenden Werte austauschen , bis sie sich kreuzen. Machen wir das Schritt für Schritt und versuchen zu sehen, was tatsächlich passiert. Wir haben also P, S & P an den beiden äußersten Enden. Wir müssen ihre Werte tauschen. Das heißt, wir müssen die Positionen zwei und minus sechs tauschen . Also bringen wir hierher, bringen minus sechs hier her. Dann bewegen wir VS um einen Schritt vorwärts und PE um einen Schritt zurück. Und tausche wieder ihre Werte aus. Wir bewegen Bier und b0. Jetzt zeigen sie auf denselben Ort. Schluchzen hat also keine Wirkung. Im Grunde genommen. Wir können hier aufhören oder wenn wir mit Schritt vier weitermachen wollen, sobald der Vater das kann ich tun und seitdem haben sie sich gekreuzt. Wir hören auf. Auf diese Weise. Wir können die Elemente des Arrays mit zwei Zeigern umkehren . Ich hoffe, Sie kommen auf die Idee hinter diesen Algorithmen. In dieser Lektion haben wir versucht, die Zustände einiger der grundlegenden Algorithmen zu visualisieren . Wir haben noch keinen Python-Code geschrieben. In der nächsten Lektion werden wir echten Code in der Python-Umgebung schreiben und ausführen. Das ist also alles für diese Lektion. 3. Array: Hallo zusammen. In dieser Lektion lernen wir etwas über Partitionierung. Was partitioniert Ellie? Lassen Sie uns das anhand eines Beispiels erklären. Nehmen wir eine LEA mit den folgenden Zahlen. Das ist 387-272-1402 Partition dieses Arrays, wir müssen zuerst eine spezielle Zahl namens Pivot auswählen, die eine der Zahlen ist, die im Array vorhanden sind. Angenommen, wir wählen vier als Pivot-Nummer. Wir müssen die Zahlen im Array neu anordnen. Also, nachdem alle Zahlen links vom Pivot neu angeordnet wurden, oder kleiner oder gleich dem Pivot-Wert. Und alle Zahlen rechts vom Pivot sind größer oder gleich dem Pivot-Wert. Wenn wir SDP vert wählen, könnte eine mögliche Lösung wie auf dem Bildschirm gezeigt sein. Die Lösung ist 032-14-7078. Beachten Sie, dass Zahlen links vom Pivot für weniger als gleich vier stehen. Zahlen rechts von vier, gleich vier. Das linke Subarray und die Beine sind nicht unbedingt von selbst sortiert. Beachten Sie auch, dass, wenn wir das gesamte Array sortiert hätten, nach der Partitionierung die Position, der Pivot dieselbe Position erhält wie die Position, die er nach dem Sortieren des gesamten Arrays erhalten würde . Extrahieren, um einen Algorithmus zur Partitionierung dieses gegebenen LA zu entwickeln Gehen wir den Algorithmus Schritt für Schritt durch. Zuerst müssen wir den Pivot an der ersten Stelle dieses Arrays platzieren . Dann müssen wir zwei Zeiger nehmen, P1 und P2, und sie auf die ersten beiden Elemente zeigen lassen. Also zeigt p1 auf das erste Element und v2 auf das zweite Element. Dann müssen wir P2 Schritt für Schritt bis zum Ende dieser LA verschieben . Und während wir dies verschieben, wir bei jedem Schritt etwas tun, müssen wir bei jedem Schritt etwas tun, das als Checked and Swap bezeichnet wird. Was müssen wir also wie folgt tun? An jeder Position von P2 müssen wir prüfen, ob der Wert bei p2 kleiner oder gleich dem Pivot ist. Wenn nein, dann tu nichts. Aber wenn ja, dann müssen wir den anderen Zeiger p1 um einen Schritt inkrementieren und dann die Werte von P1 tauschen und P2 wird aufhören, wenn P2 das Ende des Arrays erreicht. Lass uns die Schritte ausführen. Derzeit befindet sich P2 also auf Position zwei und sein Wert ist acht. Also ist P2 nicht weniger als für b gearbeitet. Beide sind also in einem Schritt fällig. 77 ist also wieder nicht weniger als gleich vier. Also bewegen wir P2 um einen Schritt. Jetzt ist zwei weniger als der Pivot für. Also müssen wir diesen Unterschritt hier machen. Was wir jetzt tun müssen, ist p1 um einen Schritt vorwärts zu bewegen und dann die Werte von P1 und P2 zu tauschen . Dann bewege P2 erneut um einen Schritt. Und wieder sehen wir, dass der Wert bei P2 , der aktiviert ist, kleiner oder gleich vier ist. Also müssen wir diesen Swap-Schritt erneut durchführen , der zuerst P1 um einen Schritt morph ist. Und dann tausche die Werte von P1 und P2 aus. Bewege P2 erneut um einen Schritt. Und wieder beobachten wir, dass der Wert bei P2 , der drei ist, kleiner oder gleich vier ist. Also bewegen wir p1 erneut um einen Schritt und machen dann den Tausch. Mehr 321 Schritte. Und wir sehen, dass Null wieder kleiner als vier ist. Also bewegen wir uns eins nach dem anderen und machen dann den Tausch. Zu diesem Zeitpunkt befindet sich P2 am Ende dieses Arrays. Die Schleife über P2 ist also beendet. Als letzten Schritt müssen wir nun die erste Position des Arrays, das ist der Pivot-Wert , mit p1 austauschen . Dadurch wird der Pivot an die richtige sortierte Position gebracht. Und jetzt sehen wir, dass alle Zahlen links vom Pivot oder kleiner als vier sind. Und alle Zahlen rechts vom Pivot sind größer als gleich dem Pivot-Wert für. Dies ist eine gültige Partition des Arrays. Ich hoffe, dies hat dazu beigetragen, die internen Schritte beim Erlernen des Algorithmus zu visualisieren . Als Nächstes gehen wir den Python-Code für diesen Partitionsalgorithmus durch . Hier ist eine Python-Funktion namens partition, die eine Eingabe namens a, die Danny ist, entgegennimmt und sie in Bezug auf einen Pivot partitioniert. Und dies setzt voraus, dass sich der Pivot an der ersten Position dieses Arrays befindet. Gehen wir diesen Algorithmus Zeile für Zeile durch. Zuerst initialisieren Sie die beiden Zeiger p1 und p2 auf 0,1. Dann setzen wir den Pivot, indem wir die erste Position des Arrays lesen , die eine Null ist. Dann schauen wir uns, wie bereits erwähnt, gerne P2 an. Also bewegt sich P2 von seinem aktuellen Standort bis zum Ende des Arrays. Das Ende des Arrays wird durch die Länge des Arrays gekennzeichnet. Dann implementieren wir mit der nächsten if-Anweisung die Logik , die wir zuvor besprochen haben. Das heißt, wenn a von p2 kleiner als gleich Pivot ist, dann bewegen wir p1 und tauschen dann die Werte von P1 und P2 aus. Diese Zeile AFP ein Komma f p2 ist gleich einem f B2 Komma f von p1 ist der Python-Ausdruck zum Austauschen von zwei Werten. Hier sind die Werte a von P1 und P2. Das ist also eine sehr intuitive Syntax. Und dann beginnen wir diese if-Anweisung, wir bewegen P2 weiter, naja, einen Schritt in jeder Iteration dieser While-Schleife. Und wenn sie aus der While-Schleife kommen, das heißt, wenn P2 das Ende des Arrays erreicht, tauschen wir wieder Null und a von P1 aus. Dies dient dazu, den Pivot von seiner aktuellen Position, dem Anfang des Arrays, an seine endgültige Position zu bringen. Und das ist alles für diese Lektion. 4. Array: Hallo zusammen. In dieser Lektion führen wir das Python-Programm für die Array-Partitionierung aus. Hier haben wir die Partitionsfunktion , die ich bereits gesehen habe. Außerdem gibt es eine Hauptfunktion , die eine Liste namens my list erstellt und die Partitionsfunktion mit meiner Liste als Eingabe aufruft . Lassen Sie uns das Programm im Debug-Modus ausführen. Setzen wir einen Breakpoint in die Hauptfunktion und führen ihn aus. Wir sind also am Breakpoint. Und lass uns zuerst die Liste erstellen, meine Liste. Bitte behalten Sie diesen Variablenbereich im Auge und Sie können die Werte der Variablen sehen. Und dann geben Sie die Partitionsfunktion ein. Initialisieren Sie zuerst p1 und p2, die beiden Zeiger. Und dann setzen Sie den Pivot, dem wir annehmen, dass das erste Element des Eingabe-Arrays ist. Also hier ist der Drehpunkt vier. Lass uns die Schleife über P2 betreten. P2 bewegt sich also von seiner aktuellen Position zum Ende des Arrays. Erstens, wenn P2 acht ist, was nicht weniger als der vierten Periode entspricht. Also gehen wir über die if-Anweisung hinaus und gehen zur nächsten Iteration der Schleife über. Nun, wenn P2 gleich 77 ist, ist das nicht weniger als gleich dem Drehpunkt. Also fahren wir mit der nächsten Iteration fort. Wenn nun P2 zwei ist, ist das weniger als gleich dem Pivot Vier. Also gehen wir in die if-Anweisung, inkrementieren darüber hinaus um u1 und machen den Tausch. Wir gehen zur nächsten Iteration über. Jetzt ist AF P2 eingeschaltet. Geben Sie also erneut die if-Anweisung ein und machen Sie den Tausch. In der nächsten Iteration ist P2 drei, was weniger als gleich Pivot vier ist. Also wieder geben wir die if-Anweisung ein und führen den Tausch durch. In der nächsten Iteration. Wenn B2 Null ist, was kleiner als p ist, wofür? Also geben wir die if-Anweisung ein und führen den Tausch erneut durch. Und jetzt hat P2 das Ende des Arrays erreicht. Also kommen wir aus der ganzen Schleife raus. Und dann machen wir den letzten Tausch, den Pivot-Wert, der sich an der ersten Stelle mit b1 befindet. Und das vervollständigt den Algorithmus. Nicht im Variablen-Bereich. Sie können den aktuellen Stand der Mindlist sehen. Und es wurde partitioniert. Also alle Zahlen links von vier oder weniger als gleich vier, und alle Zahlen rechts von vier oder größer als gleich vier. Wenn ich also den gesamten Algorithmus in einer sehr einfachen Sprache erklären muss, wäre es so. Es gibt zwei Zeiger, p1 und p2. Was machen sie wirklich? B1 behält eine Grenze zwischen den beiden Partitionen bei. Die linke Partition, die vom Anfang des Arrays bis zu p1 reicht, ist die Menge von Zahlen, die kleiner als gleich dem Pivot-Wert sind . Und die Zahlen rechts von P1 sind die Zahlen, die größer als gleich dem Pivot-Wert sind. Wie erreichen p1 und p2 das? B2 explodiert jede neue Zahl des Arrays. Und wenn diese neu erforschte Zahl kleiner als gleich dem Pivot-Wert ist, erweitert B1 die linke Grenze und diese neue Zahl wird in die linke Partition verschoben. Durch Tauschen. Auf diese Weise die linke Partition immer enthält die linke Partition immer Werte, die kleiner als gleich dem Pivot sind. Und die rechte Partition enthält Werte, die größer als gleich dem Pivot-Wert sind . Beachten Sie, dass die rechte Partition nach T1 beginnt und sich bis P2 erstreckt. Ich schlage vor, dass Sie dieses Programm in Ihrer Python-Programmierumgebung durchlaufen . Damit Ihnen die internen Schritte sehr klar werden. Und das ist alles für diese Lektion. 5. Binärsuche: Hallo zusammen. In dieser Lektion lernen wir etwas über die binäre Suche. Was ist binäre Suche? Hier? Wir erhalten ein sortiertes Array von ganzzahligen Zahlen, und wir erhalten auch eine andere einzelne Ganzzahl x, wir müssen die Position von x in diesem sortierten Array a finden. Wenn x in a nicht vorhanden ist, können wir minus eins zurückgeben. Nehmen wir ein Beispiel. Wir erhalten das sortierte Array a, das heißt, Sie können sehen, dass es in aufsteigender Reihenfolge sortiert ist. Und wir bekommen auch eine andere Zahl x. Wir müssen die Position von x finden. Wenn x in a vorhanden ist, müssen wir andernfalls minus eins zurückgeben. Hier können wir also sehen, dass sieben in der LEA vorhanden sind. Und der Standort von sieben ist Index vier. Das bedeutet den fünften Platz. Also müssen wir vier zurückgeben. In diesem Fall. Wenn der Wert von x ist, dann können wir sehen, dass neun im gegebenen a nicht vorhanden ist. Die binäre Suche sollte also minus eins zurückgeben. Versuchen wir, den binären Suchalgorithmus zu visualisieren. Wir erhalten das sortierte Array, das in aufsteigender Reihenfolge sortiert wird. Und wir müssen nach einer bestimmten Zahl X in a suchen. Hier ist der Wert von x sieben, also müssen wir nach sieben suchen. Beachten Sie zunächst, dass wir das gesamte Array ein Element nach dem anderen durchqueren und nach x suchen können . Dies erfordert n Schritte, wobei n die Gesamtzahl der Elemente im Array ist. Wenn das Array zu lang ist, die Zeit, die für eine Suche auf diese Weise benötigt wird, ebenfalls sehr lang. Das ist also kein effizienter Weg. Wenn das Array nicht sortiert wurde, müssen wir das so machen. Aber im Moment ist das Array sortiert. Also müssen wir diese Eigenschaft nutzen, um unseren Algorithmus zu beschleunigen. Schreiben wir den Algorithmus in einfacher Sprache. Zuerst müssen wir zwei Punkte am Anfang und Ende des Arrays setzen . Sagen wir die LPS und p. Wir sagten, P steht am Anfang und p am Ende. Als nächstes finden wir den Mittelpunkt von P S & P. Das heißt, wir finden P S plus p, alle geteilt durch zwei und unten gerundet. Das wird also der Mittelpunkt genannt. Beachten Sie, dass dies voreingenommen ist. Das heißt sicher P S ist zwei und p ist drei. Dann ist Mate zwei plus 3/2. Und diese Division ist eine Integer-Division. Das Ergebnis ist also zwei. Der Mittelpunkt von 2,3 ist zwei, Mittelpunkt von 23,4 ist drei. Der Mittelpunkt von 234,5 ist drei. Deshalb heißt es links voreingenommen gemacht. Lassen Sie uns die Mitte des aktuellen P S & P berechnen. P S ist Null und P ist 70 plus sieben mal zwei, was 3,5 entspricht. Abgerundet. Hallo ist drei ist gleich drei. Mitte wird also bei Index drei platziert. Jetzt suchen wir nach x. Also vergleichen wir den Wert an mir mit x. Wenn x gleich Mate ist haben Sie die Position von x gefunden, und wir geben den Wert von Fleisch zurück. Wenn nicht, dann steht x entweder rechts von Fleisch oder links von Fleisch. Wenn x größer als Fleisch ist, dann steht x rechts von Fleisch. Und in diesem Fall können wir das umgehen, was sich links vom Fleisch befindet , damit wir das gesamte Subarray, das Starttreffen, wegwerfen können . Auf diese Weise können wir den Suchraum sehr schnell reduzieren. In jeder Iteration kann also die Hälfte des gesamten Arrays verworfen werden. Und das macht diese binäre Suche sehr schnell. Jetzt ist x größer als drei. Also bewegen wir PS. Treffen Sie plus eins. Das heißt, das direkt rechts vom vorherigen gemacht wurde. Jetzt wissen wir, dass alles, was links von Gleichaltrigen übrig ist, verworfen werden kann. Wir haben unseren Suchraum um die Hälfte reduziert. Jetzt. Berechne mich noch einmal. Derzeit ist PACs vier und p ist sieben. Das Fleisch von 4,7 ist also 5,5. Unten sind fünf abgerundet. Treffen wir uns also um fünf Uhr. Jetzt ist der Wert des Wertes bei Fleisch 88 nicht gleich x. Und wir sehen, dass jetzt x kleiner ist als Mate. Also bewegen wir B, um minus eins zu machen. Jetzt, in der nächsten Iteration, berechnen wir erneut die Mitte. Sie werden also sehen, da PAs und PE den gleichen Wert haben, auch der Wert von Fleisch derselbe. Also werden wir wieder auf denselben Ort zeigen. Jetzt. X ist gleich meet found x. Und wir sind zurückgekehrt, gemacht. Auf diese Weise. Wir können die Position von x in den sortierten Daten finden. Nehmen wir nun ein anderes Beispiel , bei dem x in der LA nicht vorhanden ist, sagen wir x gleich neun. Auch hier beginnen wir am Anfang mit PAS. Und am Ende. Die Mitte zeigt auf den Mittelpunkt. Wir vergleichen den Wert bei , der drei ist, mit x, x ist neun. Also muss x rechts von Fleisch sein. Also bewegen wir VS, um uns plus eins zu treffen. Und wieder rechnen wir, was hier ist. Wir vergleichen den Wert x mit x. Der Wert von x ist neun, also ist neun größer als acht. X muss also das Licht des Fleisches sein. Also verschieben wir PAs auf Mitte plus eins. Jetzt rechnen wir uns wieder, das heißt, was genauso sein wird wie bs. Wir vergleichen x mit Nate und stellen fest, dass x jetzt weniger als Fleisch ist. Also bewegen wir B auf Mitte minus eins. Sie in diesem Stadium, Beachten Sie in diesem Stadium, dass P S & P sich kreuzen. Also halten wir an und kehren minus eins zurück. Das bedeutet, dass X in diesem Fall in diesem sortierten Array nicht vorhanden ist. Schauen wir uns den Python-Code für die binäre Suchfunktion an. Die Funktion akzeptiert zwei Argumente. Das erste ist das Array, ist ein Array von ganzen Zahlen, die in aufsteigender Reihenfolge sortiert sind. Und x ist eine weitere Ganzzahl. Wir müssen die Position von x in a finden. Und wenn x nicht vorhanden ist, geben wir minus eins zurück. Gehen wir die Funktion Zeile für Zeile durch. Zuerst initialisieren wir P, S & P, die Start- und Endzeiger. Also ist p, wird auf Null initialisiert, oder der Index der Position ganz links. Und PE ist gleich der Länge von minus eins. Das ist der Index des Standorts ganz rechts. Dann starten wir die While-Schleife mit der Bedingung P S ist kleiner als gleich p. Das heißt, wir fahren mit der While-Schleife fort. Die beiden Zeiger kreuzen sich nicht. Zuerst berechnen wir den Partner, der , wie wir zuvor erklärt haben, das linksvoreingenommene Treffen ist. Und dann prüfen wir, ob x gleich a von mid ist. Das bedeutet eine Wertschätzung. Wenn a von mid gleich x ist, dann haben wir x gefunden und geben die Position zurück , die erstellt wurde. Wenn nicht, dann verwerfen wir je nachdem, ob x größer als a ist oder x weniger als eine Hälfte gemacht ist, x größer als a ist oder x weniger als eine Hälfte gemacht ist, die Hälfte des Arrays. Wenn also x größer als a von mid ist, verwerfen wir die linke Hälfte des Arrays und den Wert selbst. Das heißt, wir setzen auf Mitte plus eins. Wenn x kleiner als m ist es. Dann verwerfen wir den rechten Teil des Arrays und setzen p auf Mitte minus eins. Und dann wieder berechnen wir die Übereinstimmung mit diesen aktualisierten Standorten von P S & P. Und wir wiederholen diesen Weg. In jeder Iteration verwerfen wir also die Hälfte des Arrays. Am Ende können also zwei Dinge passieren. Entweder wird X gefunden und in diesem Fall geben wir die entsprechende Position von X zurück oder X wird nicht gefunden. Und P, S & P kreuzen einander. Und wir kommen während der Schleife heraus und kehren minus eins zurück. In diesem Fall. Ich hoffe, Sie bekommen die Grundidee wie dieser binäre Suchalgorithmus funktioniert. Das ist alles für diese Lektion. 6. Python-Programm mit binärer Suche: Hallo zusammen. In dieser Lektion lernen Sie das Python-Programm für die binäre Suche kennen. Hier ist die binäre Suchfunktion, die Sie bereits gesehen haben. Außerdem haben wir eine Hauptfunktion geschrieben , die die binäre Suche aufruft. Setzen wir also einen Breakpoint in die Hauptfunktion und führen ihn aus. Wir sind also am Breakpoint. Also erstellen wir zuerst ein Array, das bereits sortiert ist. Wie du siehst. Bitte behalten Sie den Variablenbereich im Auge, in dem Sie die aktuellen Werte der Variablen sehen können. Wir definieren x bis sieben. Und dann rufen wir binäre Suchfunktion mit a und x als Eingaben auf. Wir wollen die Position von X in einem finden. Geben wir also die binäre Suchfunktion ein. Zuerst P, S&P. Die Start- und Endzeiger wurden auf 0,7 initialisiert, wie Sie im Variablenabschnitt sehen werden. Dann betreten wir die ganze Schleife mit der Bedingung P ist kleiner als gleich p. Dann berechnen wir den mittleren Wert des Mediums ist drei. Und dann prüfen wir, ob x gleich oder kleiner als, gleich oder kleiner oder größer als Fleisch ist. Beachten Sie, dass, wenn wir x mit Fleisch vergleichen, wir wirklich den Wert an Punkt a von mid meinen, wenn er gleich ist, um ihn zu erfüllen, und wir ihn bereits gefunden haben, und die Funktion kehrt zurück. Aber wenn nicht, wird es zurückgesetzt. Entweder p ist RPE, abhängig davon, ob x größer oder kleiner als ist. Lass uns sehen. Also hier ist der Wert von x, wie wir wissen, sieben, und a von mid ist drei. Also ist x nicht gleich x ist größer als eine Hälfte. Also setzen wir den Zeiger ps zurück, um plus eins zu machen. In diesem Schritt verwerfen Sie die Hälfte davon. Fahren Sie also mit der nächsten Iteration fort. Mit den neuen Werten von P S&P. Der neue Wert von P, S ist vier und p ist sieben. Also schauen wir uns jetzt das Subarray an, beginnend am Fehlerort und bis zu diesem bestimmten Ort berechnen wir Treffen wieder. Der Wert von Fleisch ist jetzt fünf und entspricht acht. Derzeit ist es also weniger als Mitte. Also kommt es her. Und jetzt setzen wir p0 auf Mitte minus eins. Schauen Sie sich nun die Variablen an. Abschnitt P, BE und PAs haben den gleichen Wert, der vier ist. Also der Punkt auf dieselbe Stelle im Array. Wir berechnen Mitte. Mid ist auch für offensichtlich. Jetzt ist x gleich f meet. Und wir geben Mitte zurück, was dem Wert vier entspricht. Wir sind also von der binären Suchfunktion zurückgekehrt und das Ergebnis ist vier. Das bedeutet, dass X bei Index vier des sortierten Arrays vorhanden ist . Ändern wir X, 7-9. Und dann noch einmal Schritt durch dieses Programm. Wir haben die gleiche LEA, die bereits sortiert ist. Wir setzen x auf neun und geben dann die binäre Suche ein. Also werden P, S & P initialisiert. Starte die Schleife. Der Wert von Fleisch liegt zunächst bei drei. Also ist x nicht gleich x ist größer als m, Es ist ein bs plus eins. Und fahren Sie mit der nächsten Iteration fort. Und jetzt ist MIT fünf. AF made ist also nicht gleich x, ist kleiner als x. Also setzen wir jetzt ps zurück, um Handschuhe anzuziehen und mit der nächsten Iteration fortzufahren. Rechnen Sie sich erneut, das sind sechs. Also traf AF jetzt seine Entscheidung, die nicht gleich x ist. Nein, x ist kleiner als a von Mitte. Komm auf jeden Fall her und mache einen Reset p minus eins. Beachten Sie nun, dass der Wert von P, S sechs und der Wert von B fünf ist. Das heißt, P, S & P haben sich gekreuzt. Hier bricht die ganze Schleife und wir kehren minus eins zurück. Sie werden also sehen, dass das Ergebnis minus eins ist. In diesem Fall wird der Wert von x nicht im sortierten Array gefunden, daher wird minus eins zurückgegeben. Ich schlage vor, dass Sie diese binäre Suchfunktion in Ihrer Python-Entwicklungsumgebung durchlaufen Ihrer Python-Entwicklungsumgebung , damit Sie sich mit den internen Schritten vertraut machen. Und nenne diese Funktion mit verschiedenen sortierten Arrays mit unterschiedlichen Längen. Machen Sie sich daher mit der internen Funktionsweise dieses Algorithmus vertraut . Das ist alles für diese Lektion.