[Playlisten] [Impressum und Datenschutzerklärung]

S12B binäre Suche programmieren; Laufzeitkomplexität


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

noch weiter zu sortierenund suchenwenn ich eine sortierte Liste habe ??ABCoder CP wie auch immerdie FG H IHWG zweiter G H I JJ wir Komma wenn ich die sortierte Liste habe kann ich darin relativ schnell suchendurch fortlaufendeshalbierendas war ich auch mit ihm durch exerzierendass es einewesentliche Anwendung für Satirenwenn ich schnell suchen willsortiere ich erstvorher ein einziges Mal dann kann ich danach Millionen mal schnell suchendas ist übrigens auch ?? Funktion eingebaut ?? C genauso wie dasSortieren in C eingebautes versuchen eingebaut Leerzeichen alle neueren Sprachenes kann aber ?? helfen sich das zu Fuß anzugucken und nebenbei kommen ?? mal was Überweisungstrickslernen zu Wiederholungwas ich suchen will sinddannTelefonbucheinträgedamit von Komma an und schreiben Sie mal gerade zur Übungeines Traktin der stehen soll eine Zeichenkettefür den Nachnameneine Zeichenkettefür den Vornamenund eine Telefonnummerlassen die Datensätze in den nicht gleichsuchen willdafür eines Trucks zu schreibenerst maldas Essen schöner Name nennen Sie diese Struktur mal diesen Typ mal Kontaktist es ja noch keine Listees ist erst ein einzelnerKontaktsoalsotragtKontakt solldas heißen in Schweifklammerman was drinstecktsoll??Leerzeichen schon geschweifte Klammer zuund in C und C plus plus an Semikolonaber wenn sie sind ein Teil derKontaktder Nachnameoffensichtlich eine ZeichenketteChartwie viel Zeichen baumelt für den Nachnamenmüsste man je nach Anwendungsfall entscheiden ich habe Zimmer zweiunddreißig??will sagen ein dreißig Zeichen und die Null am EndeLeerzeichen baumelt für den Vornamen ?? jetzt auch mal zweiunddreißigdie Telefonnummerdamit wollte extra in Versuchung führenwenn sie dann entmachenhaben Sie auf dieser Maschine maximalzwei dreißig tausend irgendwasdas Telefon nur bisschen mager wenn sie an Saint inmachen geht bis vierundsechzig tausend irgendwas das ist eine Telefonnummer auch magervor einigen haben sie nichts wieranplusvier neunin Klammern nullund so weiterSie haben keine Nummerndie mit null anfangeninsofern will ich die Telefonnummerauch zu einer Zeichenkette machen?? zwei zweiunddreißigder kann man auch wirklich nach dem Motto telefonierenähmso das wärewas ich in diesein was ich in die Datenbank als einen einzelnen Eintrag reinschreiben würde es ist nicht die Liste das istso wie mir nicht mal ein Eintrag das ist das Muster ?? die Schablone für einen Eintragdas Formular sozusagensind nicht echte Datensondern ich hab erst das Formular beschrieben für einen einzigen Eintragdarausbaue ich jetztmein Telefonbuch?? gerade auch noch mal schreiben das man hin ich hätte gerne ein Telefonbuchmitzu ein paar Namen schon mal drinWettermuellerAnton Meyer wie auch immer wie schreiben Sie so was aufeine ?? in dem KontaktesindKontakt?? bestimmtes TelefonbuchDame jetzt endlich die Listedas einzelne hier ist ein Formularzu sagen was in jedem Eintrag der Liste gespeichert wirdist noch kein echter Eintrag sondern nurdie Form von dem Eintragdas Telefonbuchdiese Variable soll dann nachher wirklich die Liste werden mit echten Einträgendas was drin steht wenn sich überlegensollte ?? weiterschreiben Kontakt Telefonbuchund in eckige Klammern gleichinsAhaeckige Klammernund sowasein Reh mitvier Einträgenanlegenjeder Eintrag ist ein in das reha SAjetzt das analoge hierein Telefonbuchwenn ich hier die Zahl nicht angebe wird es Ray automatisch so großwie selten mussich lieber keine Zahl an und was lässt man irgendwelche Einträgeerst mal außen die Schweifklammerfür dieLeseinitialisierungwurde die auf jeden Fall innen drin müsste man eigentlich in sie jetzt nicht noch mal Schweifklammer setzt nicht fix aber deutlichübersichtlicherwenn man drin weiter Schweifklammer setzt erster Eintragper Nachname Komma VornameKomma Telefonnummerund ?? und der zweite Eintragunter Homers dritter Eintrag?? damit verbissen suchen können ich bastle mal gleichfünf Einträge das Essen zum Themeprinzip sieht dass da was passiert?? Gates in jedem Los mit VornameNachnameNachname Vorname TelefonnummerVornamen Telefonnummerwas wenn man üblichen KandidatenMeyer mit A soneuerManager und irgendeine Telefonnummerunddann machen meine damit dieTelefonnummerKomma damit er spannend wirdmehrereraller Ausnahme da malEgonder Mitte im Alphabet dahinter stehtirgendwasandas hatte ja schon ganz zu Beginn gesagtdieses Sekret soll sortiert seinwenn's nicht sortiertes würde man einmal die Sortierfunktiondrüber laufen lassen das soll sortiert sein das macht gleich dieSuche sehr effizienttricksen dass hier müssen zusammenich sage einmal sollte dir zeigen die schreibersortiertesRNA reinwahren Leben würde man natürlichsortieren müssen zu Fußmüssendie BibliotheksfunktionaufrufenamMeyer Egon käme nach Maria Carlanoch mitHansHornung undlast not leastdas aber ganz am Ende Zachariaszur Richterin VornamenAnton fehlt immer noch neben ABC dieso was das soll meineKontaktliste sein mein Telefonbuchsein alphabetischsortiertdie Nachnamen sind sortiert und bei gleichen Nachnamensind die Vornamenalphabetischsortiertund dafür hätte ich jetzt gerne eine Suchfunktionjemand gibt mir?? NachnameVornameund ich möchte rausfinden was die Telefonnummerist schreiben Sie mal zumindest wieso eine Suchfunktionvon außenaussehen sollalso blablablablablairgendwas mit runden Klammern ?? daSchweifklammerwir wissen nicht was drinnen stehtSchweifklammerwie müsste diese Suchfunktionvon außen ausanderen und Egon ?? dieselbe Telefonnummerdie eine Wohngemeinschaftsei soaber das Problemähnlicher Art was passiert wenn derselbeName Vornamezweimaloder dreimal auftrittdas ist heikel das noch mal als Kommentaruns merkentut duda was passiert wenn ein Name mehrfach auftauchtwenn die Telefonnummermehrfach auftaucht??okaykein Problem dann kommt eben für den Jäger diese Telefonnummerfür den anderen dieselbe TelefonnummeranKomma was es in Einnahmen mehrfach auftaucht wenn ich zwei mal Egon Meyer habemit zwei verschiedenen Telefonnummernich wird das erst mal zurückstellendas ProblemKomma dannam Ende noch mal dazukommenGesetze davon aus jeden Namen gäbe es nur einmaljede KombinationNachname Vornamegewiss noch einmal wie selten die Suchfunktionaus von außenversteht hier in der obersten Zeilerichtigziehst nicht so gut mit UmlautenUmlaut in der Zeichenkettewirddennoch akzeptierenes passiert einfach allenfalls Blödsinn dann bei der Ausgabe je nachdemauf welchem Gerät man es ausgibtamCompiler wird dieses Bynehmen aber sie haben recht es wäresicherer erst mal da Louis zu schreiben Csowie sollte die Funktion heißenich denke einfach nur suchedummen einfachen Namenvon ?? auch nur noch Rückgabetypwas kommt zurückerster was in der Funktion gebe ich gebe der Funktioneine Zeichenkettefür den Nachnameneine Zeichenkette für den VornameNachnamefür die Vornamejeweils ein Zeichen geht also nicht nur ein Schardas wäre ein Buchstabeoderein Bytezahlvon null bis hundert und fünfzig oder von mindestens achtundzwanzig bis plus hundert sieben zwanzig es ist nicht ein Beistrich sondern es ist eine ZeichenketteWasser ja eigentlich dann ankommtist ja nicht die komplette Zeichenkettesondern ist nur ein Zeigerwo stehtdie Nummer null das Zeichen Nummer null dieser Zeichenkette im Speicher das kommt ja eigentlich an es kommt nicht die komplette Zeichenkette an sondern nurdie Adresse die Hausnummerdes vordersten Zeichens der Zeichenkettegenauso hierwas ich zurückgebeist von derselben Sorte Musterzeichenkettezurückgegeben werden ?? nämlich die Telefonnummerhatte der Rückgabetyp ist nicht Schardas wäre nur ein Zeichen ich gebe nicht nur ein Zeichen zurückich gebeein Zeiger auf eine Reihe zurückan einzelnen Buchstabendas ist nicht was ich zurückgeben willich eine Zeichenkettezurückgebenund C ist leider an der Stelle bisschen asymmetrischsie können nicht das Schreibendas ist etwas ungeschicktsie können aber Schreibensscharsternchenein Zeiger auf ein Zeicheneigentlich ist das hier dasselbekönnte hier stattSchaf VornameRegler man auch schreiben ScharsternchenVornamenein Zeiger auf ein Zeichenbedeutetdasselbe an dieser Stelle hier vorne dürfen sie leider nicht die eckigen Klammern schreibenbleibt dann nur das Jahr Sternchenin C dürfen sie nicht da die eckigen Klammern schreibensoll ich sag es kommt also ein Zeiger auf ein Zeichen zurückdannläge eine Garten schon angefangendas mal zu Bauen wirklich schreiben Sie mal eine billige Implementierungdafürwie ist das ganz billig zu machenund effizientwenn ich nicht wüsste dass diese Liste hieralphabetischsortiert istich das nicht wüsste dann müsste ich auf eine sehruneffizienteWeise suchendie vielleicht erst mal hinund dann überlegen wozu man es besser machen kann?? genau sie könnten hier auch X und Y schreibendas wäre egales wird nur keiner mehr verstehenals das hier Nachname Vorname steht ist für den menschlichen Leser die menschliche Leserinnach einer Vornahme der unten hat nicht erst mal nichts mit Nachname Vorname hier oben zu tunPunktdas ist nur zum besseren Verständnisdass ich hier schon diese Bezeichnung gewählt habenPunkt die billigste Lösung wäre also eine for-Schleifeich geh diese gesamte Liste durchdie gleich nullI kleiner Damen sie gerade gemerkt das es blödeffizient ist dennin dengrößerenneueren Sprachen können Sie dieses RE fragen wie viel es denn enthältin C kann man was Zusammenheckenmit Zeiss aufErden funktioniert abertypischerweisenicht Davos funktionieren sollte sondern nur in bestimmten Stellen jeweils außer Weise funktionierenich für diese einfachheitshalberjene Variable anlegenin der steht wie viele diesem drin sindzwarKontaktefünf?? andere Möglichkeitwäredas wäre richtig C mäßig andere Möglichkeit wäre ans Ende von diesem Geräteinfach einen leeren Eintrag zu setzenund dann nehmen sie keinefor-Schleifesondern eine Hochwaldschleifeso lange bis sie auf den leeren Eintrag stoßen könnte man auch machendas wäre schon bisschen rustikalZahl der Kontakte merk ich mir einfach und dann kann ich jetzt hier ?? Anzahl der Kontaktehier erhöhenso ich prüfe ob der Nachnamestimmtdas was im Telefonbuchstehtan der Stelle dieAnzeige auf eine Zeichenketteda möchte ich wissen ob das dasselbe istwie ich rasch ?? falschen da möchte ich wissen ob das dasselbe ist wie der Nachnameinden größeren Sprachen können Sie das so schreibender aber sicher insbesonderekönnte das so schreibenin C haben sie dagegen hier ein Zeiger und dein zeigen und vergleichen die beiden Zeigerdas wird typischerweiseschiefgehen?? es gibt aber dieeingebaute Funktion StringkomperPunkt siekommt er CPdie das übernimmtdie liefert eine Zahl null oder minus einseins null wenn die beiden gleich sind mindestens groß eins jener Reihenfolgeim Alphabet Stammestrinkermehr da ist brauchen wirRinggut??Ringeinen gewollten Sinn kommt gerade aus selber schreibenVorsicht wenn sie das tun wenn sie ZeichenkettenZeichen für Zeichen vergleichenahnen stellen Sie sich vorKomma das was dazwischenscheint sich vor sie haben so eine ZeichenketteA B C D E F und dann kommt da die abschließendenull und dann steht da Müll im Speicherund sie haben andere ZeichenketteABC DF und danach steht Müll im SpeicherPunkt sie dürfen nur Zeichen für Zeichen vergleichen bis sie die null gefunden haben sie dürfen jetzt nicht alle zwei ?? dreißig Zeichen vergleichen denn nach der nullder Müll der Muster nicht derselbe sein auch wenn die Zeichenketteneigentlich dieselben sindmuss der Müll der nach der Zeichenkette stehtnicht derselbe sein also wenn sie wirklich zu Fuß vergleichenZeichen für Zeichen vergleichendann nur bis zu der null und nicht weiterso sicher wäre Beistrich wenn der annulliertinoder für was sehr schönich vergleiche ja nicht Telefonbuch von ihmsondernwas der Zeichenkette für den Nachnamen stehtbestimmt auchdannaus dem Telefonbuchwurde mir den Eintrag Nummer ihnvon dem Eintrag Nummer IPunkt Versand sagte Stone mit Nachnamenden Vergleich mit den Nachnamen der ?? übergeben worden ist das jetzt dieselben bezeichnenes aber nurfür den menschlichen Leserso gedacht das es hier dieselben Bezeichner sind den Compiler bringt das nicht durcheinanderdieser Nachname bezieht sich auf dieses Trakt im Telefonbuchsteht und der Nachname ist der Nachname der oben bekommtdannso wenn die beiden übereinstimmenddie beiden NachnamenübereinstimmenPunktdie beiden Vornamen übereinstimmte können auch zwei Hilfs ineinander schreibeneben gesehen geht auchdie beiden Vornamen übereinstimmendann können wir die Telefonnummerganz einfach ausgebenzurückgebensollte ich sagen indem wir die Telefonnummerzurückdas wäre also aus dem Telefonbuchselbe Stelle dann dieTelefonnummerso?? ich gehe die ganze Liste durchwenn ich einen Eintrag finde mit blassem Nachnamen passen Vornamen gebe ich die Telefonnummeraussie meinte du hier das heißt wenn der Name Vorname die Kombination mehrfach vorkommtgebe ich nur die Telefonnummervom allerersten ausdas ist keine so sichere AngelegenheitprofessionellerWeise erst mal gucken müssenwie man das überhaupt hinrichten ihre Telefonnummernauszugebenoder man zurück liefern muss wo sich das Meer deutlichdarum geht's mir gerade nicht das Kirchmann unter den Teppich das Problem aber das bedeutet schon das man diese Funktion noch massiv um Stricken muss damit sie wirklich mit mehrfachen Namenzurechtkommt?? mal davon aus das derzeit nur jeden NamenVornamen in der Kombination einmal gibt dann wäre das soweit richtigwas kann er passieren dass ich ihren Namen eingebenVornamen eingebender nicht im Telefonbuchstehtdas was ich komm aus der for-Schleife rauszwischendurchist kein Return passiertich komme hier unten anmuss er natürlich jetzt dazu was zurückgebendas wäre eine Möglichkeit das sie dann sagen nicht gefundenhabenkönntemeistensfunktionierenich finde es etwasgefährlichmansich vorstellen sie nutzen das zum Beispiel zum automatischen wählendann wird hier dann eben keine Telefonnummer gewählt sondern nicht gefunden gewählt und irgendwie fragt sich jemand auf der Gegenstelle dannwas das bedeuten sollte die TelefonnummerInitiativender Stilleund so weiterdas wäre gefährlich da jetzt einfach nicht gefunden zurückzugebenich würde hier ??null zurückgebenin C plus plus könnte man es sogar fast nur so hinschreiben?? nullden Nullzeigerzudas heißtgerne diese Funktion verwendetwürde also prüfen müssenkommt der Nullzeiger zurückeines klar Obstnicht gefunden oder kommt was anderes zurück ganz klar wir haben was gefunden?? würde man das typischerweise in C lösendamit der Compiler null kenntin all solche ?? sagen brauchen wir hier noch in Cloud Standard DevSPDder Standarte finnischeso würde man das typischerweiselösendas Komma KommunikationveranstaltenSchahsternchenresultatist gleichSuchezurück mal einen existentenerst malHansder Formund dann suche ich danach mal gleich sofort einen den es nicht gibtKommamal sehenso in einem Schritt hier durchsucheMueller Hans durchjetzt ?? ich natürliches hat ja schon angedrohtein Zeigerwas zurückkommtist ein Zeiger auf den ersten Buchstabeneiner Zeichenketteund netterweise zeigt jetzt erst das ist der Zeiger der Werte sei das hexadezimaldrei sechs zwei und ihr zeigt Ihnen die Entwicklungsumgebungschon den Anfang anda nicht zu viel Service weiter aufmachensodabei Leerzeichen die Entwicklungsumgebungschon an was denn da steht an dieser Stellesechs vier drei vier drei zweisechs vier drei vier drei zwei soweit funktioniertder nächste Aufrufden Namen den es nicht gibt??null wie sich das gehörtalso daran würde ich es unterscheiden könnenob die Suche erfolgreich war oder nicht ?? kommt hier als Zeigereine null zurück der Nullzeigeroder kommt als sei da was vernünftiges zurück so würde man die Funktion einsetztsiehaben recht das es ordentlich was ich hier mache dann die erfährt eine die Funktionvon Zarkontakteund Telefonbuchich benutze dies ja einfach hier Zahl Kontakt und Telefonbuchpreiseals globale Variablen in der Datei vor da ist kann es ja ?? benutzendas ist vielleicht bisschen unsauberan was ist wenn ich mehrere Telefonbücherhaben wollen würde dann müsste ich dieser Funktiontatsächlich sagen es ist dieses Telefonbuchaber nicht das andere Telefonbuchdas heißt die Winzerfunktionnoch ein weiteres Ray gebennämlich dasjeweilige TelefonbuchWasser angesagt istundmüsse man gucken oder sind recht das man hier dieZahl der Kontakte des jeweiligen Telefonbuchsauch noch hatglaube an der Stelle würde ich wirklich zu der Lösung greifendass ich am Ende einen leeren Eintragnoch unterbringen und nicht die Zahl der Kontaktemit Übergeberaus das ist doch keine saubere Geschichteich provozierehier gerade auf das SuchenanprogrammiermäßigSoftware technisch ist das jedoch nicht richtig sauber eigentlich sollte diese Suchfunktionauch offiziell erfahren aus welchem Telefonbuchdenn gesucht werden soll ich nehme jetzt ganz einfachdreist dieses globale Telefonbuchwas davor in der Datei stehtdas ist gruseligalso Suchen kommt ein Zeiger zurückich speichereden Zeigerin der variablen Resultatscharsternchenein Zeiger auf einenBuchstabendas ist nachher der Zeiger auf das vorderstein dem Gerät rennenwenn sie hier nur ein Schar habenversuchen Sie diesen Zeiger hier eine Speicherstelledie Nummer einer Speicherstelleunterzubringenin einer Variablen die ein Bytespeichertund das nimmt selbst sie übel genommen hier machtProjectMayfinden Sie das dass selbst sie übernimmtwelche oft halb char SternchenkennerDesigntonNTT oft HalbscharValue auf Teil char Sternchen ist das was sie rechts raus kommt die Suchfunktionliefert ein Zeiger auf einen Schardas kommt darausauf deutscher Kenner Designskann nicht zugewiesen werden mit dem gleich weisen dazueinen ?? Sternchen Valueanzeigeauf einen Schar auf ein Buchstaben kann nicht zugewiesen werdeneiner Entität einemDingeinem Objektvon der Sorte charhierder speichert ein Bytesund sie weigert sichdiesen Zeiger der daraus kommt in diesem einen Bytes diesen einen Buchstabenabzulegenund das nächste geht dann aus demselben Grundeweiterhin schiefwarumkommt die Anzeige raus ähmfallen habe ich natürlich gesagt es kommt Zeiger rausBeistrich erscheint Sternchen ?? wenn ich oben nicht char Sternchen geschrieben hätte sondern nur chardann müsste auch hier nur Schar stehenandererseitswenn die oben nur char Stunde ?? char Sternchenwürde das sie wieder nicht funktionierendass sich die Adresse der Zeichenkette übergebendas eine bedingt das andereMartin?? mich völlig verschätzt mal sehen was er jetzt noch schaffenan die binäre Suchedas jemals überhaupt nicht verwendetdass diese Liste sortiert istals gezielt Komma das dann zumindest wie eine binäre Suchefunktionieren würde hier gehen sie wirklich jeden einzelnen durchsie nicht wissen ob Sortiertestdas dauert heißen paar Millionen Einträge sindich weiß aber dass es sortiert istSuchekönnte man vorgehtso das ist der Gedanke wenn ich eine sortierte Liste habedann guck ich in der Mittezuerstbin ich zu weit in der Mitteoder bin ich noch nicht weit genugin der Mitteund dann heißt dasich muss noch in der Hälfte suchen binäre Teilungwenn ich in der Mitte noch nicht weit genug warPunkt ich oben weiterbildewieder die Mittebin ich da zu weitodersich noch weiterbin ich da schon zu weit bin guck ich hier weiter nachbildenda die Mitteund so weiterund so weiterich muss ?? zu ihrem ?? gucken bei dem ich mir da gerade angucke in der Mitte ist das schon der richtigeirgendwannwird der richtige sein?? sich ab ?? fortlaufendeHalbierungdas geht dann extrem schneller probierte das malwie kann man das hinschreibenGänsefüßchen untenwahrscheinlich auch nicht programmiertich das machen würde wäre folgendesich würde eine Schleife bauendie so lange läuft wie das noch nichtgefunden worden istsowas wohlgefundensolange dies noch nicht gefunden wordenist läuft diese Schleifefür mein wohl bauliche oben natürlich jetzt Sternsymbolhabsoanich gucke in der Mitte nachoben ich in der MitteEntmit gleichdas muss man sich jetzt eben zusammen basteln wo man in der Mitte istich kenne ja am Anfang erst mal hier die Zahl derKontakte der muss jetzt leider was nachlegendas wir so noch nicht richtig seinPunkt ich bin ganz Tag ganz brutal durch zwei teilendannim Zweifelsfall bin gerade Anzahl habe bisher kein mittleres Element ?? werden nämlich eben das unter dem mittleren Elementsei soda würde ich jetzt nachguckenob der größer oder kleiner ist als diese Kombination NachnameVornamemithilfe vonStringkomperstringkommt er sagte nicht glaubt gleiches sondern sagt mit dem Vorzeichenauch bloß als minus eins in welcher Reihenfolgedie im Alphabet stehendas für dich ausnutzenrein von dem Besteheneiner Senkung der null null rauskommt wüsste ich okayerledigt gefunden ich gebe den Wert zurückden ich da habe die Telefonnummer Zurückdichter habe wenn austrinken wer was anders rauskommtmüsste ich jetzt anders weitersuchenmuss ist ein erstmals Kontakt Kommentare hinschreiben ?? mit Kratzer knapp??sich dann in der oberen Hälfte oder in der unteren Hälfte weitersuchenich müsste mir auch noch merken wo ich oben binwo ich unten bin was sind meine oberen und unteren Grenzenwichtiger wäre mir jetzt folgendesnoch mal Grüße wovonSohn zur Notationdieser Laufzeitwenn ichenden Elemente hier habe beider normalen Suche ein Telefonbuchmit den Einträgenwas ist die Laufzeitvon dieser Suche im Mittelwas erwarten Sie wie viele Schritte sozusagendiese Suchfunktionlaufen muss wenn ich in Einträge imTelefonbuch habewovon ähmam richtig also im Mittel die Hälftebin ich immer die ListeA vier Komma von oben nach unten durchsuchebis ich eingefunden habekann ich schnell Glück habenAnton Aal mit Doppelarm den Fini sofortaber ich kann auch Pech habenHerrn Zacharias am Ende den Film nicht erst ganz zuletztim Mittelwerde ich en halbe Schritte brauchenum in dieserListe was zu finden wenn ich von oben bis unten sucheund das wäre dann O von Nund es wäre auch Ofen in Quadrat und wovonzwei hochenden aber es wäre nicht wovon Wurzel einMann würde typischerweise dafür dann O von N angebensind gotischgeht das wie die erste Potenz von Ndiese Suchzeitdiemittlere Laufzeit Komplexitätist wovon ähmirgendwas wie en halbe Schritte dichtmachen mussdie schlimmste LaufzeitKomplexitätmuss immer bis zu Ende suchen dass es das schlimmste ist auch wovon ähmich eben in Schrittebeider binärenSuchewenn ich fortlaufendhalbierenwas erwarten Sie da als schlimmstenFall wie viel Schritte muss ich machen im schlimmsten Fall ?? ich habe aus den Elementen zu suchen wie viel Schritte brauche ich im schlimmsten Fallals ich würde sagen das sind zwei der Logarithmus von N Schritte zweier Logarithmus von N Schrittewenn sie denn verdoppelnwenn sie die Anzahl der Elemente in der Liste verdoppelndann wächst der Logarithmus um eins ich brauche eine Halbierung mehr so könnte man das leicht machen oder wenn sie mit tausend vierundneunzig anfangen Beistrich bereits die Fang mit tausend zwanzig annach dem ersten Schritt haben sie fünf hundert zwölf zwei hundert sechsundfünfzighundert achtundzwanzigvierundsechzigund so weiter und so weiter nach neun oder zehn Schritten sind Sie fertig nach meiner Finanzierungsind sie fertigder zweite Logarithmus der Anzahlkönnte man auch anders schreiben wenn es um rechnen ist zum Beispiel der Zehnerlogarithmusvon N durch den Zehnerlogarithmusvon zweies ist ein auch relativ egal es ist of vonLok ähm so würde man das typischerweisebezeichnen O von Boken egal welcher Logarithmusalgorithmenunterscheiden sich enorm konstante Faktoren sind jeder zwei ?? wird mussstattdessen bis auf den Zehnerlogarithmusnehmen und durch die CD-ROMs von zwei Teilenegal welchen Logarithmus hier nehmewovon Lok N würde man dazu sagendas istdeutlich schnellerfür große N deutlich schneller als wovon ähm die lineare Suche von Anfang bis Endeso wird man typischerweisemindestens Vorgehen in Datenbankenwird auch noch Indices habenund Ähnlichesaber das ist das aller mindeste was man machen würdeBemerkung froh von Lot N wäre automatischdann auch O von N und O von N Quadrat und O von zwei hoch ähmaus mathematischist das hier eine echte Teilmengevon O von N und eine echt dass eine echte Teilmenge von O von zum Beispiel zwei hoch ähmdieses groß O sagt jaalle Funktionendie maximalso schlimm sind Asymptote Speedy Funktion die in den runden Klammern stehtalso wenn etwas offener Kern ist es automatisch auffangenwovon zwei Hochent aber das Ding hier eben die lineare Suche die ist definitivnichtssie ist Element O von N von der Laufzeitkapazitätaber sie ist nicht Element O von Lok ähmsie ist schlimmerals das sie nichtund jedoch nochder Vollständigkeithalber die Videosucheausformuliertich merke mir für jeden Durchgangdie Nummer des Elements bei dem ich anfange zu suchen und die Nummer des Elements werde mich aufhörtzu suchen also erst mal von null bis Gesamtzahl minus einsalleund dann ist dies jetzt eine Endlosschleifegewordenin der ich fortlaufend halbierendass es deshalb ihren Anfang und Ende durch zweiÄrzte wird in der Mitte pädagogisch nach ist der Wert in der Mitte zu groß oder zu klein ?? wird in der Mitte vergleicheichmit dem übergebenen Nachnamen vornahmwenn der Wert in der Mitte kleineristals die übergebene Nachname Vorname bin also vorher im Alphabet stehtdann suche ich in der zweitenHälfte weitersetze den Anfang auf Mitte plus einsdamit zurück in der zweiten Hälfte weiterundwenn der Name in der MitteKurz ihnin der Name in der Mittehinterdem übergebenen Namen steht im Alphabetdann mach ich mit dem Anfangder vorderen Hälfte meiner Liste weiter setzt das Ende auch mit minus einsVergleichmit String KonversionKommazählen hier wieso diese drei Vergleiche stattfindenim ersten ?? will ich wissen ob der Name Telefonbuchin der Mitteim Alphabetvordem übergebenen Namen istist der Nachnamevor dem übergebenen NamenoderStimmen Nachnameund Nachname über einselben Nachnamenund dann prüfe ich die Vornamenob derVornameden ich in der Mitte gefunden habe im Alphabet vor demübergebenen Vornamen stehtentwederdas erste passiert noch das zweite passiertnoch eine MöglichkeitNachname und Vornamestimmenangeblich direkt die Telefonnummer zurückirgendwann muss diese for-Schleife ja mal abbrechen wenn es schief gehtdas macht diese letzte Bedingung hier dann endet die Wahl schlafe das ist die Klammer auf von der Warteschleife damit wieder zu??wenn ich hier das Ende auf Mitte Minuseinsätzeminus einswenn ich ganz am Endeunter den Anfang runtergehendas ist nicht mehr erfülltund wenn ich hier den Anfang auch mit dem Bus einsetzewenn ich ganz am Endeüber das Endehinausgehendas es auch nicht mehr erfüllt und in dem Fall kann ich dann einfach sagen Terminal ich habe nichts gefundendas heißt es sieht eher so aus wie eine Endlosschleifediewie sieht es aus wie ein Endlosschleifeaber das ist mal wiedermit mehreren versteckten Müttern garniert diese Schleife wird ähmund es gibt eine technische Randbemerkungwenn ich die Mitte bestimmedas ist klassischer Fehlerwenn ich die Mittelstimmeist das wie ich das hier mache eine schlechte Ideeeine große Zahl noch eine große Zahl diese Summe kann überlaufenund anteilig Blödsinn durch zweihier muss man vorsichtig sein das sollte man anders machenich hab jetzt so hin?? Claus was ich meinedas ist aber nicht die professionellen