Transkripte
1. Einführung: Ich bestelle in dieser Klasse. Ich möchte über Finery sprechen, suchen verwandte Ellenbogen. Diese Arten von Alben kommen viel auf, und es ist Ihr mit Ihrer Zeit, ein paar Minuten zu verbringen, Ihr Wissen zu aktualisieren. wissen, wie eine binäre Suche funktioniert, können Sie andere Albertans auf der Grundlage des gleichen
Prinzips verstehen . Nach diesem Kurs haben
Sie eine gute Erinnerung daran, wie das passiert, arbeiten und ein bisschen besser darauf vorbereitet sein, sie in einem Interview oder in Ihrem Dele Wort in den Notizen zu zeigen. Geben Sie einen Link für den Quellcode an. Sie können dies verwenden, um das Album weiter zu respektieren. Sehen Sie, wie ich das umsetzen würde. Okay, lasst uns anfangen.
2. Algorithmische Erklärung: Werfen wir einen Blick auf Byner-Forschung. Binäre Suchen verwendet, um etwas in einer Art Liste zu finden. Das ist eine Voraussetzung. Die Liste muss in unserer Beispielliste sortiert werden. Hier haben wir Buchstaben, und sie sind eine zunehmende alphabetische Reihenfolge. Wenn die Liste nicht binär ist, funktioniert die
Suche nicht. Beina Forschung bekommt seinen Namen, weil wir die Liste jedes Mal in zwei Hälften teilen, wenn wir einen Schritt in
der Stunde von ihnen machen . Also lassen Sie uns das mit einem Beispiel sehen. Suchen wir nach dem Buchstaben G in dieser Liste, also wollen wir nach dem Buchstaben G suchen. Diese Liste ist 10 lang, also fangen wir in der Mitte an. Element. Mitte wird die ganze Länge geteilt durch zwei sein. Sagen wir einfach fünf. Ob dies von einem nach oben oder unten ist, wird keinen großen Unterschied machen. Holen Sie sich den Umriss. Was die Liste in zwei Hälften aufteilt, und es wird irgendwann etwas finden. Also, wenn wir den fünften Index beginnen, dass 012345 das ist nicht in der nächsten von fünf. Wir fangen hier an. Das sieht so aus, als wäre es auf der anderen Halb-A-Liste. Das ist in Ordnung. Es gibt fünf auf beiden Seiten. Visuelle Anomalie wieder. Es spielt keine Rolle, ob es um eins bei I gleich fünf ist. Wir haben ein K, das ist nicht G. Das K ist größer als das G, aber das sagt uns etwas, weil das K größer ist als das G. Wir wissen, dass das G mich nicht richtig davon. Das G muss links davon sein, wenn es da ist. Also binäre Suche sagt dann:
Nun, Nun, schauen wir uns diese erste Hälfte an. Also, wenn eine Abspaltung dieser ersten Hälfte hier und schauen wir einfach durch diesen Weg hier, ist
es fünf lang. Wir werden in der Mitte dieser wieder beginnen jetzt fünf geteilt durch zwei könnte 2,5 Woche
um sein . Drei oder zwei machen keinen großen Unterschied. Wir gehen
auch herum . Und dass 012 ich gleich zwei ist. Was ist, an dieser Stelle hier? Wir haben es nicht an dieser Stelle, und die Leichtigkeit weniger als die G. Also nochmal, das sagt uns etwas. In welcher Hälfte der verbleibenden Lis ist sie drin? Es ist nicht die linke Hand, weil er größer ist als G, also ist es nach rechts. Wenn es da ist, schickte
einige Kaufforschung, also ist es schmal. Unsere Suche runter bis hier rüber. Es ist zu lang und relativ zu diesem Teil, den wir wollen. Das eine Element ist zu durch zwei geteilt ist eins plus. Hier sehen wir uns hier drüben an, dass ich gleich vier ist, und wir werden den
Buchstaben G finden . Wie viele Schritte hat es uns getan, dass Wir 123 Vergleiche gemacht haben. Wir haben drei Vergleiche durchgeführt, um den Artikel zu finden, den wir wollten. Nun suchen wir nach dem Buchstaben C Wir wissen, dass C nicht in dieser Liste ist, aber mal sehen, was der binäre Sortieralgorithmus in diesem Fall wieder tut, wir werden in der Mitte der Liste hier bei I gleich fünf beginnen. Que ist größer als sieht, also wissen wir, dass es auf der linken Hälfte sein muss, also wird es nur in dieser halben Zeile sein, gegen dass wir wissen, wo es ist, und wir werden jetzt in der Mitte der Hälfte anfangen. Wir werden jetzt darauf hinweisen, und das ist es. Index ist gleich zwei. Das ist nicht der Brief, nach dem wir suchen, ist größer als sehen, also sagt uns das nochmal, es ist in der linken Hälfte hier. Also schränken wir unsere Suche wieder ein und jetzt haben wir nicht noch kleinere Liste, und wir werden wählen, wo die Mitte wieder ist. Die Mitte hier bei unserer Orgel würde hier drüben anfangen. Es beginnt bei I gleich eins. Das ist nicht der Brief, den wir jetzt haben. Es ist größer als C, und das ist Arbeit. Es ist ein bisschen verwirrend zu sehen, dass wir immer noch zwei Seiten haben. Auch wenn die Grenzen hier rechts von D nichts sind. Es gibt tatsächlich eine leere Liste hier. Wir schauen nicht in diese Seite links von D. Wir müssen nur sein und wir wissen, dass wir nach links schauen müssen, weil D im Meer großartig ist. Also schränken wir die Suche auf nur dieses Kriterium ein und wir machen einen weiteren Schritt bei I gleich Null und wir finden das Meer nicht. Nun sagt der binäre Stern an dieser Stelle:
Nun, Nun, welche Hälfte ist es auf seiner linken Hälfte? Aber es spielt keine Rolle, denn es gibt nichts auf der Hälfte links zu suchen, weil die Länge der verbleibenden A-Liste jetzt Null ist. Wir wissen, dass wir nicht in dieser Liste sehen. Es ist nicht wegen der Komplexität hier. Zählen Sie die Anzahl der Schritte erneut. Wir haben 1234 Schritte. Kursschritte. Es ist ein bisschen mehr als der Krieg. Drei stellen dumme vier Schritte.
3. Algorithmen Komplexität: Das ist so ziemlich wie die binäre Suche funktioniert. Sie wählen immer einen Drehpunkt aus. Zuerst wählen
Sie den Punkt in der Mitte aus und vergleichen Sie den Wert. Wenn der Wert „find“ kleiner ist als der, nach dem Sie suchen. Also ist es weniger als seine Sie gehen, um diesen halben Wert suchen K ist mehr als, dass Sie suchen. Du wirst auf die rechte Hälfte schauen, also wenn es größer ist als sie, so ist es immer größer als im Vergleich. Und dann nehmen Sie die Hälfte und wiederholen Sie den Vorgang, und das macht es zu einem rekursiven Algorithmus. Bridge Schritt das Album respektiert die Hälfte der Größenliste. Lassen Sie mich einige der Boxen herauszeichnen, wo dies nach der Zweckkomplexität sucht. Also verstehe ich, was passiert. Also hatten wir das K und dann, wenn es größer war, als wir einige Kisten auf der linken Seite haben, gibt es nur fünf von ihnen, und auf der anderen Seite haben wir nur vier davon. Wir haben die Liste in zwei Hälften gesetzt. Jetzt wird das Gleiche hier passieren. Wir nehmen das in der Mitte, wählen eins in der Mitte
und dann bleiben Sie mit zwei übrig, um hier drüben zu vergleichen,
zwei hier drüben und auch mit und dann nur einer. So endet der Zweig hier und immer zu Einsen. Es sind fast Sonderfälle, aber sie passieren eine Menge. Du hast den mittleren ausgesucht. Und wenn es nicht der mittlere ist, müssen
Sie am Ende eine weitere Suche auf jedem von ihnen durchführen. Und das ist ein Muster, an das du dich in Alben gewöhnen solltest. Du spaltest dich in jeder Hinsicht in zwei Hälften. Du musst nur hier runter zu den Ein-Boxen gehen. Sobald Sie zu den Ein-Boxen Ihre Suchanfragen gemacht, haben Sie das Element gefunden oder Sie haben es nicht. Wie viele Schritte gibt es hier? Jedes Mal, wenn Sie sich in zwei teilen oder Sie duplizieren, sollten
Sie dies definitiv mit exponentiellen Mustern erkennen. Also ah, binäre Sortierung ist länger das Muster. Also haben wir Logbuch. Und wieder, hier sagte ich, es spielt keine Rolle, ob es von einem ausgeschaltet ist, und so könnte es ein wenig nach oben oder unten sein. Die Zählung kann sich hin und her ändern. Und deshalb sagen wir: „
Nun, Nun, es ist ein großes o von langem Ende. Das ist die Obergrenze wird nicht über den Punkt hinausgehen, an dem wir die Beschränkungen entfernen. Sie können auch Glück haben. Manchmal. Wenn Sie auf der Suche nach dem K sind, finden
Sie sofort eine Pflege, in diesem Fall wird nur ein Vergleich durchgeführt. Aber wir suchen nach Worst-Case-Szenario. Denken Sie daran, in einem Interview, wenn sie nach Zeit fragen, Komplexität dort, in der Regel nach Worst-Case-Szenario fragen. Aber wenn Sie unsicher sind, können
Sie normalerweise fragen und nach Algorithmus suchen. Sie fragen nach der Anzahl der Vergleiche. Und da dachten wir nicht, dass wir hier verglichen haben. Verglichen hier. Wir vergleichen hier, dass wir hier vier Vergleiche verglichen haben. Auf diese Weise messen wir im Allgemeinen die zeitliche Komplexität der Suche nach Alben. Wie viele Vergleiche müssen wir machen?
4. Untere und Obergrenze: Es gibt ein paar Sonderfälle für die Suche nach Beispielen. Suchen wir jetzt nach einem M und wir wissen, dass es zwei hier drin gibt. Also mal sehen, was der Algorithmus tut, war zuerst 0,2. Ich gleich fünf, und das ist die K que ist weniger als M also wissen wir, dass wir auf die rechte Seite hier schauen müssen. Also teilen wir es ab, es würde hier gehen, und der Mittelpunkt wird hier oben bei I sein, gleich acht R ist größer als M, also wissen wir, dass wir nach links schauen müssen und jetzt haben wir es auf diesen Teil hier beschränkt . Das ist, wo der interessante Teil ist. Dann überprüfen wir das hier, weil das nur zufällig bewusst ist, dass es funktioniert. Wir hätten das überprüfen können, und ich sagte:
Wir finden es und wir fanden das M, also fanden Sie, dass die grundlegende Suche in Ordnung ist. sind zwei Alben dort, sehr nah an der Suche, die sehr oft auftreten, während andere Algorithmen implementiert werden. Diese beiden Algorithmen sind, was wir Untergrenze und Obergrenze nennen und M ist der Fall und führt niedriger. Bounce sagt, wird mich an den ersten Ort zeigen, wo wir es finden würden. Also, wenn wir nach der Untergrenze von em suchen, wollen
wir eigentlich diesen Ort und nicht diesen. Der Wert der Untergrenze ist, wenn Duplikate vorhanden sind. Sie wissen, Sie können auf die 1. 1 zeigen, aber auch die untere Grenze ist auch gut. Wenn du nach Dingen suchst, die nicht da sind. Lass uns darauf zurückgehen. Siehst du, falls wir wissen, dass es hier nicht sieht, aber das sagt uns nicht viel aus. Was, wenn wir es gerne wissen würden? Nun, wo würde man hier reingehen sehen? Was sind die nächsten Nachbarn? Etwas wie Lower Bound kann uns sagen, wo die nächsten Nachbarn sind. Also die untere Grenze, um Mitte zu
beginnen, hier zu starten, dann überprüfen Sie hier und dann wissen wir hier und hier und überspringen Angebote, wie das gemacht wird. Aber Lower Bound will uns im Grunde diese Position hier geben, weil hier das Meer dio-würde, und es wird uns letztendlich diese Position hier geben. Ich gleich eins, weil Untergrenze spezifisch sagt Was ist das erste Element, das nicht weniger ist als das? Wert B ist kleiner als dieser Wert, also ist das nicht, was wir wollen, D ist größer als dieser Wert. Also ist es das, was wir wollen. Diese Formulierung von nicht weniger als war im Fall M wichtig, weil es Malta gibt, von
denen. Es bedeutet die 1. 1, die nicht weniger ist als weil M nicht weniger als em ist. Es lässt es übereinstimmen. Also diese Untergrenze Funktion ist nützlich, um einen Platz in einer Liste zu finden, wo ein Element existieren könnte wenn es nicht da ist oder wenn es dort ist, um sicherzustellen, dass Sie die erste gefunden 1 Wenn das relevant ist, sehr eng mit Untergrenze verbunden ist oberen Gürtel Grenze sagt uns die ersten Artikel, größer
ist als der, nach dem wir suchen. Also, zum Beispiel, wenn Sie nach der oberen Grenze aus em suchen dieses Mal, wir wissen, M ist da. Aber wir wollen den Punkt finden, an dem M nicht mehr das richtige Tier ist. Ist es da, wo es aufhört? Also will die Obergrenze von M auf hier zeigen. Also an dieser Stelle hier, wo wir Sache einfügen, ist
dies das erste Element in der Liste, das nicht kleiner oder gleich oder größer als M ist . Das bedeutet für alles, was nach em kommt, das dorthin gehen könnte. Dies ist wichtiger oder interessanter für Elemente, die nicht in der Liste enthalten sind. Zum Beispiel, wenn wir gut wissen wollen, wohin mein Ende geht, kann
man auch sagen:
Nun, Nun, es geht in das Also für die Suche nach etwas und es ist da, sagt
die Obergrenze. An welchem Punkt ist, nach diesem Element, ist
dies für einige Arten der Sortierung nützlich. Oder wenn Sie einen anderen AM einfügen möchten, möchten
Sie sicherstellen, dass er nach den vorhandenen kommt. Sie können auch die Obergrenze von Dingen betrachten, die nicht existieren. So wie siehe, wir wussten, dass die untere Grenze von C auf die D zeigte, weil das die 1. 1 war, die nicht weniger als C war. Das ist auch zufällig die erste 1, die größer ist als sehen. Also im Falle von Gegenständen, die nicht existieren, also sind sie nicht hier. Die untere und obere Grenze werden gleich sein, weil sie nicht in der Liste enthalten sind. Es wird immer an der gleichen Position in der Einfüge-Sortierklasse zeigen. Wir werden uns ansehen, warum dies einen Unterschied macht, warum Sie möglicherweise Obergrenze gegen
Untergrenze verwenden möchten, um eine Art der Sortierung Oberer Untergrenze zu machen, werden sehr verwendet, wenn viele Alben, die sie versuchen, Elemente zu finden, die nicht auf der Liste sind, nur versuchen finden Sie einen Ort in einer Liste für etwas sein muss, auch wenn es nicht da ist, sie
verstehen und in der Lage sein, sie zu implementieren, wir geben Ihnen Zugriff auf eine Vielzahl von anderen Alben, um Ihnen bei einer Menge Codierung zu helfen Interviews.
5. Binäre Suchcode: Ich habe mir jetzt den Code für die binäre Suche und die untere und die obere Grenze angesehen bevor Sie sich das Segment ansehen. Bevor Sie sich den Code ansehen, stellen Sie sicher, dass Sie diese Übung selbst versuchen, richtig zu gehen. Ihre eigene binäre Suche. Behandeln Sie die Ober- und Untergrenze als Bonusfragen. Ich werde einen Link zu diesem Code unten in den Notizen haben, also schau es dir auch an. Aber wieder als Ihr Projekt, stellen Sie sicher, dass Sie diesen Code zuerst schreiben. Führen Sie die binäre Suche durch. Versuchen Sie ein paar Eingaben. Lassen Sie uns ein paar Testfälle machen. Stellen Sie sicher, dass es die Vielfalt der Eingänge funktioniert und überzeugen Sie sich, dass Sie verstanden haben, worüber ich im vorherigen Segment
gesprochen habe und dass Sie eine Vinyl-Forschung in einer
Interview-Situation schreiben könnten . Okay, schauen wir uns den Code an. In den Klassendateien
gibt es also ein Haupt-P Y in Italien. Der Haupt-Python hat Reichtum und Python, aber es sollte einfach genug sein, zu folgen. Unabhängig davon ist
der obere Teil davon alles Art von Boilerplate, nur um die Python-Umgebung für
Vergleichbare einzurichten . Eine Sache weiß über die Vergleichswerte. Die einzige Vergleichsoperation, die verwendet wird, ist kleiner als dies sehr häufig ist, wenn
Algorithmen für Standardbibliotheken geschrieben werden, also sind vergleichbar, muss nur eine weniger
als-Operation und nichts mawr definieren . Werfen wir einen Blick auf den Kauf von Forschung. Ich ziehe das ein bisschen nach oben. Hier haben wir die Byner-Suche. Was braucht der Kauf einer Forschung? Es nimmt den Wert, den wir suchen und die Gegenstände in einigen a p. Ich sehe immer noch diese genannt die Nadel in einem Heuhaufen. Es funktioniert, aber ich mag Wert in Artikeln. Es sollte klar genug sein, und es gibt ein optionales Ende zurück. Warum es Optionals ist, weil es möglicherweise nicht die Elemente findet, die es in der Lage sein muss, keine zurückzugeben. Andernfalls gibt
es die Position des Elements zurück, das gefunden wurde, die gleich dem Wert vergleicht, der in den ersten 2 Schritten für Schleife übergeben wurde, die sagen in
welchem Teil der Liste gesucht wurde? Zero war der erste, Nächste und der Langwierige. Ich war ein Top. Es sind ausschließlich die Top-Indizes. Überprüfen Sie nicht, dass es sich hierbei um einen Standard-Codierungsbereich handelt. Wir richten das ein und ihre Schleife sagt dann: Solange niedrig weniger als hoch ist, schleifen
wir weiter, weil das bedeutet, dass wir noch Gegenstände zu überprüfen haben. Wie ich auf dem Whiteboard gezeigt
habe, müssen wir uns die mittlere Position ansehen. Also das ist hi minus niedrig, geteilt durch zwei plus niedrig die Schräglash-Python. Es ist nur Energie-Division, und das gibt uns den Mittelpunkt zwischen dem Bereich überprüft wurden. Dies geschieht in einer Schleife, weil wir es immer wieder tun werden. Das ist also der Mittelpunkt. Und die erste Überprüfung war sagen, ist das Element in der Mitte kleiner als unser Wert in diesem bedeutet, wenn die aktuellen Drehpunkte in dieser Provinz kleiner als oder Wert sind, es bedeutet, dass diese gesamte linke Hälfte von den Elementen nicht haben. So sind wir in einer Verschiebung nach der rechten Hälfte auf das Segment und verschoben rechts ein halbes Segment
nehmen wir niedrig sagte es Mitte plus eins. Wir wissen, dass Mitte nicht der Wert sein kann, weil Mitte kleiner war als der Wert. Also Mitte plus eins, das verschiebt das Fenster, das gesucht wurde, nach rechts. Andernfalls, wenn unser Wert kleiner ist als der mittlere, dann wissen wir, dass wir zu hoch in der Liste sind und wir können auf die linke Seite gehen, und hier
bewegen wir uns hoch nach unten. So hoch wird Mitte minus eins und wir wissen, Mitte kann nicht der Gegenstand Zirkus in Mitte minus eins sein Wenn Sie nur Mitte als gut setzen, sollte
es funktionieren, aber es ist ein bisschen weniger effizient. Sonst kehren wir Mitte zurück. Jetzt ist es hier wichtig. Wo ich sagte, wir verwenden nur weniger als Vergleiche im ersten Vergleich. Wir sehen, ob die Elemente Mitte kleiner als der Wert in der zweiten ist, wenn wir es sehen, verringern
Werte die Elemente Mitte scheint ein bisschen seltsam. Also, im letzten Fall,
was bedeutet das? Wenn keiner der beiden Werte kleiner ist als der andere, bedeutet
das den gleichen Wert, bedeutet
dies, dass der Wert ist, den wir suchen, und wir könnten Mitte zurückgeben. Wir haben den Wert gefunden, nach dem wir suchen, und wenn wir diesen Wert nicht gefunden haben, wir keinen zurückgegeben. Dies ist also eine grundlegende binäre Suche. Ich habe es ohne Rikers gemacht, und ich habe es mit einer while-Schleife gemacht und es dauert das Segment hoch und niedrig. Es geht zu dem Segment, das es jedes Mal am Ende der Datei in zwei Hälften teilt. Ich habe einen Test zur Verfügung gestellt. Führen Sie dies Ihren Arbeits- und Torten-Test aus oder führen Sie einfach direkt aus und ich mache einige Elemente und ich mache einige grundlegende Tests. Wenn Sie einen vollständigen Krieg schreiben, als Sie eine größere Testsuite darin hätten, geben Sie
einfach ein paar Grundlagen. Ein interessanter Punkt, Ich sagte für zwei Test ist, was passiert, wenn Sie nach einem suchen und Sie in dieser Liste, Die A-Luft dupliziert und die U ist dupliziert. Du könntest die paar Jahre da drin sehen. Das Problem mit der Art und Weise, wie ich binäre Suche in diesem Beispiel implementiert habe, ist, dass es
keine Garantie gibt , für die es findet. Also dies durch Luftsuche nach einem könnte 01 Es könnte entweder einen dieser Werte finden. Gleiche mit der EU. Du könntest acht oder neun sein. Es könnte einen dieser Werte finden, und das werden wir uns die untere und obere Grenze ansehen. Also lasst uns zu diesen gehen
6. Untere und oberer Code: im Zusammenhang mit der binären Suche sind Unter- und Obergrenze Operationen. Wo suchen binäre Suchen nach einem bestimmten Element? Die unteren und oberen Grenzen suchen nach einem Platz in der Liste, wo ein Element gehören würde, ob es da ist oder nicht, und sie geben ein bisschen stärkere Garantien in einer binären Suche. Werfen wir einen Blick auf die Untergrenze. Die untere Grenze bestraft die erste Position in der Liste, bei der das Element in der Liste nicht kleiner
als der Wert ist . Das ist der erste Ort, an dem es entweder größer oder gleich ist. Und wir sagen nicht weniger als wieder, weil wir nur den weniger als Operator verwenden wollen. Aber es ist das gleiche ist größer oder gleich in diesem Fall, so untere Grenze A hat den gleichen Eingang,
aber Sie bemerken, dass die Ausgabe eine Energie ist. Er kann nicht zurückkehren, und keiner. Es ist nicht optional. Es gibt immer einen Ort, es sei denn, oder etwas gehört. Wenn nicht, könnte
es in der Mitte sein. Könnte der richtige Anfang oder das Ende sein, so dass es immer einen Wert hat. Dieses Set sieht gleich aus. Wir beginnen mit dieser vollen Palette, und wir werden es in der Hälfte jedes Mal auf der Suche nach so der Mitte segmentieren. Also die niedrigere Lektion hoch und wir suchen nach dem Mittelpunkt. Also, jetzt überprüfen wir, ob die Elemente in der Mitte kleiner als Wert sind. Und wenn es so ist, ist
das wie die Bedingung, die wir hatten, bevor Well is so niedriger Ban rechts davon sein muss . Also sagen wir Mitte plus eins, weil es weniger ist als das. Wir wissen, dass die untere Grenze streng nach Mitte ist, weil sie größer oder gleich sein muss . Du bist also weniger plus eins, jetzt ist er sonst, wo sich etwas von der binären Suche ändert. Wenn wir mit dem anderen in der binären Suche wieder nach oben schauen, haben
wir nicht l Wenn das den Wert hier unten verglichen, tun
wir es nicht. Wenn es nicht die rechte Seite war, muss
es die linke Seite sein. Wir haben keinen kurzen Rückweg. Wir können den Wert Suchen nach in der Mitte nicht identifizieren. Wir müssen immer erschöpfend suchen. Und das ist auch der Grund, warum wir sagen, hi gleich Mitte und nicht Mitte minus eins. Denn an dieser Stelle wissen wir nicht, dass Mitte nicht die Untergrenze ist. Es könnte tatsächlich sein, weil alle Elemente links von der Mitte kleiner als der Wert
in der Mitte sein könnten . Könnte derjenige sein, den wir suchen. Deshalb subtrahieren
wir keinen. Wir sagen nur Höhen weniger als Mitte. Und wir tun dies weiter, bis lo und hi der gleiche Wert sind. Ich sage, senkt Lektion. Hallo. Das ist eine Art defensive Codiertechnik, um sicherzustellen, dass es nie ewig geht, aber sie werden irgendwann gleich sein. Also haben wir an diesem Punkt in dieser unteren Grenze niedrig zurückgegeben, dann findet der erste Platz in der Liste, wo die Elemente nicht kleiner als der Wert. Also der Boden, die Testfälle. Wenn wir uns den Blick auf die Elemente jetzt ansehen, wenn wir die untere Grenze eines nehmen, die wir vorher in der binären Suche gesagt haben, hätten wir eine 01 Aber in der unteren Grenze, muss
es uns eine Null geben. Es muss der erste Ort sein, an dem es in diesem Fall existiert, das erste Element in der Liste. Und für Sie war auch der 1. 1 hier. Die erste Position ist acht. Und so gibt es Duplikate ist garantiert, welches es zurückgibt
, muss immer die 1. sein. Jetzt ist der erste Test eines nicht vorhandenen ist zu sehen, und was sollte Renditen sehen, um ein B C C zu haben, wäre genau hier, und das bedeutet, dass es die Position des F sein sollte, und das ist eine Drei. Also fanden wir die drei und wieder mit dem Warum das Warum sollte hier und einem doppelten Zed
, den ich reingeworfen habe, nur um etwas am Ende der Liste zu bekommen? Weil es größer ist als alle. Es sollte am Ende der Liste erscheinen, und dies ist größer als eine Listengröße, also ist dies ein gültiger Test dafür. Also lassen Sie uns auch einen Blick auf obere Grenze Obergrenze werfen ist nicht ganz das Gegenteil, Untergrenze. Es ist sehr verwandt. Und was es sagt, ist die erste Position, die Liste, wo das Element größer als der Wert ist nicht größer als oder gleich, aber größer als so. Es ist eine strenge Obergrenze im Vergleich zu Untergrenze und wieder, dies alles in Bezug auf weniger ausgedrückt werden, als weil, wie gesagt, dass vergleichbar das einzige, was es hat, um uns in weniger zu unterstützen, als die in viel finden von Standardbibliotheken. Dieses Setup ist wieder genau das gleiche. Wir werden unsere Fensterpalette aufstellen und sie werden den Mittelpunkt finden. Nun, unsere erste Bedingung variiert ein wenig von den letzten ist, dass wir, anstatt auf die rechte Seite zu gehen, Seite zu gehen,
zuerst auf die linke Seite gehen, und das heißt, wenn unser Wert kleiner ist als der Punkt in dem Punkt, Wir gehen auf die linke Seite. Aber wir werden nicht eine subtrahieren, weil die Position, wo in der Mitte tatsächlich die obere Grenze sein könnte,
wenn alles andere tatsächlich viel niedriger ist als es. Ansonsten gehen
wir auf die rechte Seite und wir sagen Einheimische Mitte plus eins. Hier können wir eine Mitte plus eins tun, weil es eine Garantie ist, dass die obere Grenze streng
nach Mitte ist , und wir tun dies, bis hoch gleich niedrig ist, und dann kehren wir tief zurück, und das gibt uns die obere Grenze. Schauen wir uns also die Beispiele dafür an, was dort passiert. Also haben Sie eine obere Grenze eines Where ist der untere Knochen eines war Null Obergrenze eines If ist es sei denn, Sie würden direkt nach A. sagen und das ist eine Position zur oberen Grenze von ist, dass die Position zur oberen Grenze von Ihnen direkt
nach Ihnen bei 10 ist . Also ist es nach der Acht. Und für ein Element, das keine Liste für siehe ist, ist
die obere Grenze die gleiche wie die untere Grenze, da sie nicht in der Liste enthalten ist. Also diese beiden sagen uns, wo wir es in der einzigen Änderung einfügen, wenn die Elemente bereits in der Liste es uns sagt, welche Seite davon aufgrund es in setzen. Wenn wir in Einfüge-Sortierungen tun möchten, möchten
Sie normalerweise die obere Grenze verwenden, um eine stabile Sortierung zu erstellen, um Elemente danach in
die Liste einzufügen , in der diffuse, untere Grenze. Es würde die Liste die ganze Zeit verschieben. Und das ist nicht das, was Sie in meiner Klasse für die Einfügung sortieren wollen. Ich werde darüber sprechen, warum Upper Bound hier wichtig ist, ist gegen Untergrenze. Sie haben mit stabiler Quelle zu tun
7. Alternate binären Suchcode: zurück zu diesem Problem mit der binären Suche in doppelten Werten. Als ich für dieses A in dieser Liste geholfen
habe, sagte ich, es könnte ein Wert von Null sein oder ein Generell codieren, wenn Sie eine Bibliothek bauen, das ist keine gute Situation. Ein haben. Du willst nicht zweideutig sein. AP ICE. Du willst keine Nachforschungen kaufen. Es könnte 011 Person Einflüsse zurückgeben Null. Eine andere Person gibt einen Wert zurück. Das ist ein schlechter Zustand, um diese Art von Denken zu haben, dass sich viel Luft in
Ihren Code Cross-Plattform oder verschiedene Compiler schleicht . Es ist also nicht gut, Dinge wie die Suche zu haben, die unterschiedliche Ergebnisse liefern könnten. Sie sind mehrdeutig. Wir wollen im Falle von Duplikaten ein striktes Ergebnis haben. Macht Sinn, die 1. 1 auf der Liste zurückzugeben. Wenn Sie eine Layer-Suche durchführen, welche würden Sie finden? So könnte man sagen, gut sind binäre Suchoptimierung Linearsuche? In welchem Fall die 1. 1? A. Sie kehrte Null die 1. 0 Sie kehrte acht zurück. Also, wie können wir das tun? Der Kauf, schrieb
ein Forscher, ist egal. Er weiß nicht, welchen er findet. Es gibt also eine andere Möglichkeit, dies mit der unteren Grenze zu tun, da die untere Grenze immer die erste 1 in der Liste
zurückgibt, wenn sie dort ist. Also im Code habe ich eine Off-Binärsuche zur Verfügung gestellt. Der Hauptunterschied besteht darin, dass, wenn es ein Duplikat in der Liste gibt, es garantiert, dass es zurückgegeben wird. Die 1. 1 und ich habe implementiert, ist in Bezug auf die niedrigere Bounce. Wenn Sie eine Untergrenze Operation haben, müssen
Sie die binäre Suche nicht beeinflussen. Das ist gut für eine Interview-Situation. Oder, wenn Sie die Person fragen könnten, kann ich davon ausgehen, dass eine Untergrenze existiert? Und Sie können den problematischen Teil des Schreibens von binärer Suche vermeiden und einfach die untere Grenze verwenden. Wenn Sie nach einem bestimmten Wert suchen, rufen Sie die Untergrenze im Wert auf. Dies besagt, dass der erste Platz war Elemente in die Liste eingefügt werden sollten. Und wenn es Elemente in der Liste, das erste Vorkommen aus, weil es gültig ist, auch wenn er nicht die Liste war. Das erste, was wir überprüfen, ist, dass, wenn die untere Grenze höher ist als die Länge einer Liste , es ist ein höherer Winkel zu. Es bedeutet, dass es nicht auf der Liste steht, weil es gesagt hat, dass der Ort, an dem dieses Element existieren würde, außerhalb
der Liste liegt , also kann es nicht dort sein. Also haben wir None zurückgegeben. Wenn das Element beim nächsten zurückgegebenen Wert kleiner ist als der Wert, na ja, dann ist das auch nicht das Element, das wir wollen, also sollte es nicht in der Liste sein. Wenn der Wert kleiner als die dort enthaltenen Elemente ist, können
Sie, auch
bekannt, zurückgeben , da es nicht das richtige Element ist. Andernfalls kehren
Sie niedriger zurück, da es weder kleiner als in beide Richtungen, kleiner oder größer ist als das bedeutet, dass es gleich ist. Und so verwenden Sie die Untergrenze, um ein Element in einer Liste zu finden.