[Playlisten] [Impressum und Datenschutzerklärung]

12A.3 Algorithmen, Suchen und Sortieren, Bubble Sort, Quicksort, Laufzeit, O(n log(n))


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

das erste große Themain der InformatikisttypischerweiseDatenstrukturenund AlgorithmenDatenstrukturenhatte ich ihn letztes mal ansatzweiseerzählt das ganze Semester mit verbringenwie bring ich meine Daten unterund wie komme ich wieder dranwas sie Warteschlangeund den Stack was ich vorgeführt hatte warSpaß mit Scheckseine Matrix mit ganz vielen Nullenund einigenanderen Zahlensowas sind Datenstrukturenähmwas ich heuteganz grob einmal zeigen will tiefer werden wenn ich eingehenauf ?? Semester normal InformatikistAlgorithmenwas für Gedanken gibt es hinter Algorithmen wie beurteile ich Algorithmenwie messe ich Algorithmen also Rechenverfahrenoder Problem Löseverfahrenwie gehe ich bestimmteProbleme rezeptartigandasheißt Algorithmuswie gehe ich ein Problem rezeptartiganeineneinlöse Verfahrenoder wenn's um Zahlen geht einRechenverfahrenund die typischen Sachen die man sich da anguckt es gibt diverse andere aber was man sich da ganz ausführlich anguckt in der normalen Informatikstudiumwäre Suchen und Sortierengegeben eine Menge von Objekten wie kann ich darin ein bestimmteswieder findengibt mir die Bestellung mit der Nummer soundsovielfinde mir den Datensatzzum Zeitpunktso zu vielund sortierenlassen zu den beiden großenEckpfeiler bei den Algorithmendas möchte ich ?? zum bisschen anschneiden insbesonderedas Sortierenan das Suchen ist denke ich Ihnen in der praktischen Relevanz klar sie geben in irgendeiner?? natürlich klar welche Suchmaschine ein Begriff ein und finden so zu viel tausend oder Millionen Webseiten das ganze etwas mit Suchen zu tunin irgendwelchen Verzeichnissen versuchen im Telefonbuchnachschlagenwird immer zu Fuß machenim Wörterbuch nachschlagen ?? es wardann elektronisch machenall das hat was mit Suchen zu tun das kommt und scheintrecht häufig vordas Sortierenkann man sich im Alltag gleich nicht so gut vorstellen wann muss ich irgendwelche Datenmengensortierendas lustige Weise istist das Sortierenoft eingebaut in der Suchenstellen Sie sich das Telefonbuchvorwarum ist das Telefonbuchhilfreich zum zu suchen?? es ist deshalb hilfreich Komma dass man sich deshalb hilfreich weil'ssortiert diese sind vorne mit A an und hört hinten mit Z auf das Telefonbuch nicht sortiert wärenach den Anfangsbuchstabenwird es ziemlich sinnlosmüsste jemand das halbe Telefonbuch durchgucken und jemand zu findendassein ein wesentliches Prinzip die Suche zu beschleunigenist seine Daten zu sortierennicht Telefonbuchander Informatik ?? das ?? noch ein ganz eigenes KapitelLustigerweiseist es dann recht einfach kommen seine Daten erst mal sortiert hat ist es recht einfach und recht schnell zu sucheninsofern macht man aus dem Sortieren als eigenes Kapiteles gibt auchinteressante Anwendung für sortieren ohne das Suchenaber eher weniger muss ich gestehenwas ich jetzt bringen willist normal in Sortieren rein zu gucken ich glaube ich verdammenoch mal irgendwo noch kurz was zu suchen sagen aber das was ich heute erzählen wir das Sortieren was ist eigentlichder Kern des Ganzenwas ist der Pilzalgorithmusüberhauptwas ein etwas besserer Algorithmus dafür einProblem Löseverfahrenzum Sortierenwie kann ich denn überhaupt sagen dass dasbesser oder schlechter istdaswas man an der Stelle traditionellerweisemachtAnalogbeim ersten Programm an mit Hello Worldund das erste Sortierverfahrenwas man sich anguckt des Bubblesortextrem ineffizientabergut zu programmierenals es gar nicht mal so das das nie verwendet würde wenn ich auf die Schnelle was hinschreiben muss und habe kein Sortierverfahrenfertig vorbereitet irgendwound möchte das das in einer Minute zu Ende programmiert istwarum nicht es ist nur ebensuper langsamdas sehen wir gleichdie Idee beim Bubblesort ist folgendes sie haben eineihre Daten in irgendeiner Listeanden sowas sie haben ihre Daten in einer Liste gegebendas Ziel ist diese Listezu sortieren ?? möchte auf lange Sicht dahindass die zweiundvierzigoben steht und die fünf unten?? gucken dann kämekommt zweimal interessant ?? siebzehn kommt zweimalund dann kommt die fünfundzwanzigund einunddreißigalso das hier ist gegebendass sie hinten ist was ich haben willgewünschtgewünschtEingabe und Ausgabefür diesen Algorithmusund was man und tut beim BubblesortGläschenBubblesaufsteigendeBläschen was man guckt ist fängtvorne anVergleich die ersten beiden und guckt ob die den Schummer in der richtigen Reihenfolge sindanscheinend nicht ?? also tauscht man die ausals ob die siebzehn aufsteigtdie höheren Zahlen steigen auf ?? Luftbläschensofünfsiebzehnfünfundzwanzigeinunddreißigsiebzehnzweiundvierzigjetzt guck ich mir die nächsten beiden anokaydie sind in der richtigen Reihenfolgegucken wir diese beiden Anfang zwanzig einunddreißig sind auch in der richtigen Reihenfolge der muss nicht aufsteigen ?? einunddreißigsiebzehnten in der falschen Reihenfolgedie große Zahl nach obendie beiden ?? aus einundneunzigsiebzehnfünfundda guck ich mir die beiden oben an ein dreißig Landwirte sind auch in der richtigen Reihenfolgeaberda muss immer von unten anfangen sie sehen wenn ich das veranstaltegibt's immer noch Stellen an den Blödsinn passiert von zwanzig siebzehn?? ist zwar alleseinstellefeucht aufgestiegen verzögern erstellen Beistrich in dann an der Wischer was kann immer noch sein das irgendwas übrig geblieben ist wie die fünfunddreißig siebzehn das heißt im nächsten Schritt mal das ganzeKomma von vorne gucken untenfünf siebzehn richtig siebzehnten zwanzig richtige Reihenfolge für ?? zwanzig siebzehn falsche Reihenfolgemuss stehen siebzehn fünfundzwanzigund so weiterund so weiter also ich gehe von unten nach oben jeweils zwei übereinanderliegendean ob ich die austauschen musswenn ich dann fertig bin um angekommen binund wahrscheinlich noch ein Durchgangnoch ein ?? noch einen gleich noch ein ?? und zum Schluss werden die Zahlen der richtigen Reihenfolgesitzen das ist der Gedanke hinterBubblesortdas Programmiermesserauf die Schnellenurich baue mir es mal irgend ein Erreger sich sortieren willmanKommavielleichtmaximal tausend Stückdieses ?? setzt sich nicht in die Funktion rein einfach nur um Speicherplatzan einer Stelleanzulegen wenn es in die Funktion reinsetzen wäre es eigentlich schönerander Stelle steht fehlt ihr der Speicherplatz als rechts außen hinsetzen das ist reintechnischerGrundkosmetischer Seil soll es lieber in Ansätzen einsetzenden Unterschied habe ich nie richtig besprochenes auch nichtweiter sprechen Baums außenwenn sie etwas mehr Speicherplatz gibt als indie Nachbauten wollen statische Variablenverhältniszu Variablen die auf dem Stack angelegt werdenso die Sirene möchte ich mit Zufallszahlfüllen und dann sortierenZufallszahlfür ?? netterweise nicht soschwierigvor insinnvoller Weise gleich nullplus plusich gehe dieses RE durchund schreibe Zufallszahlrein diesen ?? eingebautin meinem Funktion liefert mir Zufallszahlsollte Zufallszahlvorhersagbardie Zufallszahlaber sie sind ziemlich zufällig ausund die Rentenfunktionist deklariertin StandardlippPunkt Haso jetzt habe ich ein rät das mit Zufallszahlgefüllt istund jetzt möchte ich einfachdas sortieren lassen sinnvollerweiseschreibe ich das ganze sortieren in eine ExtrafunktionBubblesortgroßen es Arbeitsortist Punkt aus Bubblesortder Funktion möchte ich sagen was sortiert werden solldieses Rayund sie ist ja dumm sie weiß nicht wie groß eine Ray istaußerhalbvon Erstellungangelegt hat ?? an deshalb schreibe ich hier jetzt noch ein okay das Ding hat tausendEinträge Satire dieses äh Jahrund ich sage der Funktion obendrein etwa tausend Einträge in den höheren Sprachen müssen sie nicht mehr sagen dass das tausend Einträge hatalso was bitte noch Konstruktionenbei denen die Sprache das weiß dass dieses RE tausend Einträge hatso eine von zum Bubblesort nimmt eine Reihe und eine Anzahl füreine Funktion Bubblesortein REnennen wir das einfach mal Punktwarmichwobei dieses Aist nicht mit dem A zu tun hatbeziehungsweiseThema zu tun hat ja das eine ganz neueBedeutungArm und die Anzahl in Teintwie viele stehen drindie möchte ich sortierennunwas sollte dieserFunktion Bubblesort zurückgeben das bisher noch nicht geschriebenwas soll sie zurückgebenin nahe liegende Gedanke diese ist das diese Funktion Bubblesort ein Reh zurückgibtund das mit den ?? Racing Ceher ungeschickteine Reihe zurückgeben gibt es wirklich Punkt ich kann ein Zeiger auf eine Reihe zu dem ich müsste diese Speicherplätzeanlegenirgendwo noch Speicher reservieren das macht es alles sehr ungeschicktder Trick den man nutzt ist folgender Mann gibt keine Rei zurück sondern man sortiert einfach das äh was ein ?? übergeben wirdjeglichernur die Adresse des ersten Eintragsin das beieuch welche Hausnummer sie das REM Speicherund die Funktion wird jetzt ganz frech sein sie nimmt sich dieses Array an der Einstellung groß im Speicher steht und sortiert es dagibt kein neues Gerät zurück eine Kopie davon wieder zurück sondern sie sortiert es an Ort und Stellein Placesdas wäre so das übliche Vorgehen in C damit man nicht bereits durch die Gegend reichen muss das es immer bisschen ungeschicktSteinsoweit alles funktioniertPunkt Macversetzt man sich aber anscheinend ein Prozessor hier eingestelltder nicht tausendEinträge kannProzessor einstellenerinnerevier drei sechsder darf mehrokayalso je nach Prozessor haben sie Platz für diese tausend ins zwei tausend Bytes oder nicht ?? damit einen eingestellterPlatz dafür hater zwei tausend dreizehnanwas mache ich nun in den Bubblesortin der Funktion Bubblesort wie gehe ich vorsollte von unten nach oben es mal gucken ob der untere echt größer istder untere echt größer ist als der darüber der nächste echt größer ist als der darüber in die gleich sind sicher nicht tauschen ?? Gleichzeichen?? Bindestrich austausche als guck ob der Unterricht größer Komma in einer for-Schleife von unten nach oben allerdings habe im ersten Durchgang die erste Blase wieder aufsteigt ich musste noch dafür sorgen dass ich mehrere Durchgänge habeschon im ersten Durchgangin einer for-Schleifevonnullklein H das überlegen und klein noch malplus plusnebenbei hier schreib jetzt wieder ganz dreist I für die Variablen der Vorschlag ?? steht auch schon dieaber diese beiden Unis haben nichts miteinander zu tun die leben in getrenntenSchweifklammerdass die nur in dieser Schweifklammerdas wiederum dem ?? in der Schweifklammer zwei ganzunabhängige diesso das soll jetzt dasaufsteigen einer Blase sein ich gucke nach ob derAkt zu Elle größer ist als der nächsteecht größer ist als der nächste ist der aktuellenicht größer als der nächstesieht wiedas einswenn das der Fall ist dann muss ich die beiden austauschenwenn ich den eben nichtkriegen Sie das hin kriegen die beidenausgetauschtzwei Speicherstellenstehen ähnliche Zahlen drinvorherund nachher sollen die beiden ausgetauschtseinwenn Sie das indas ?? Mini Algorithmusda dassinnvolle Verfahren ist eine zwischen zu speichern sie merken sich zum Beispieldie dreizehnin einer extra Speicherstelleauf maldoch ich merke mir die dreizehn er eine extra Speicherstelleschreibe die zweiundvierzigda oben hinund schreibe dann die dreizehn mit zweiundvierzigdas ist die übliche Lösungeine extra Speicherstelledes jedermann das total raffiniert macht und etwas Speicherstelle aber das will ich lieber nicht vorversteht kein Mensch insofern ist das Besteein Extraspeicher zu haben also ein letzter Speicherstellefür meinHaar von ihm??jetzt undjetzt schreibe ich in dieses Ar von I den andernkann ich jetzt hemmungslos überschreiben weil ich ihn mir in B gemerkt habeschreibe ich reinund jetzt habe ich für den immer noch den neuen Wert inB so sehr das Observer das ausden Wert von A von ihm merkenauf von ihm mit dem anderen überschreiben und den andern jetzt mit der überschreitenden habe ich die beiden ausgetauschtdas wäre ein Schleifendurchgangfür Bubblesortanwie oft muss ich den machenvielleichtein ein billiger Trick sich das einfach am Modell ihr anzugucken wenn ich sechs Zahlenauf diese Weise verarbeiten will vergleiche ich die ersten beidenVergleich einzig vergleiche die zweiten beiden Vergleich zwei drei vierfünfsie nicht auch für die sechs Zahlen fünf Vergleicheso würde ich mir dasüberlegen Komma mit Hand voll Zahlen ausprobieren als gaben sie für sechs Saal fünf Vergleiche brauchen warum sie für tausend zweihundert neunundneunzig vergleiche oder für ähmjährliche allgemein ähm reingeschriebenbräuchte ich in minus einsvergleicheich denke mit Null anso verdient es wirklich ein minus eins vergleicheman sieht es auch hier an dem E-Plus eins wenn ich hier bis Ende gehen würdewäre ihm das als ein kleines ProblemN minus eins der Nautilus einziehenwenn ich hier nur bis N minus zwei gehen würde für dich nicht alle in der Liste durchlaufenkenne nicht eine Liste vor das wäre auch komisch aus dessen Warnzeichen das nicht funktioniertwie soll das Ende des eins stehensoweitist das jetzt ein Durchlauffür dieses Bubblesortder erste Durchlaufjetzt kann es aber sein dass sich weitere Durchläufebräuchtewas mache ichalso diese for-Schleife gehört noch mal in eine for-Schleifesinnvollerweiseist gleich null ??Jklein Adass es wahrscheinlich zu viel dort kleiner N wenn ich für die tausendElemente täglich tausend Durchgänge mache alle ich bin faul mir das jetzt überlegen das das ?? Komma Stinnes macht den Braten nicht fett ob siedann entsprechendeine ?? minus zwei hundert seineschreib das auf der sicheren Seitedas größte Element ganz unten stehtEier werde ich mit Entvertauschungund von dem was unten sicherlich am Ziel sein nicht zu viel aberwird funktioniert muss nicht lange nachdenken was diese bessere Lösungan Komma das wäre erst mal diebrutale Lösungich mache das ganze tausendmalLogik müsste man eigentlich schon das ganze in Aktion sehen könnenzur Optimierung mal ausschalten umÜberraschungenbeim Einzelschrittmodusvorzubeugendieses Handy will ich nicht ich willesder Text haben da es meine variable Abisher steht noch nichts drinsojetzt sind Zufallszahlendrin das war die for-Schleife mit den Zufallszahlenunterstehen sie diese Tabelle mit tausend Zufallszahlund jetzt kommt Bubblesortein matter denweiterwas in etwas beschäftigt offensichtlichCoachingvielfach nicht habenhättest dich mit tausend machen soll?? daszeigt schon den Punktauf den ich hinaus will es gibt zu es gibt Sortierverfahrendie sind schneller und es gibt Sortierverfahrendie sind langsamererscheinen jetzt gerade ein zu habendass wir langsamanderseitskönnte jetzt aber anhalten und gucken ?? weiter gekommen Beistrich als ihn mal an Hnajaso schlecht sieht es eher gar nicht mehr ausund sie es mittendrineinmal gerade gucken bei welchem Durchganger istanscheinend schon viel zu weit mitgemacht jetzt seine ähm durchgängige ganz Pflicht schuldigund es erscheint schon längst fertig ohne dass das weißgucken bei den Blockesokay ?? hat jetzt acht hundert zwei neunzig von den äußerenneunzehn hundert achtzehn zwei neunzig von tausend ist aber anscheinend denk ich schon fertig sowieso Blattes ganz gemerktin die Liste sieht doch schon sehrsortiert aus dochan den okay aber noch ein schief stimmt der Mist jetzt also noch weiter aufsteigen?? großen Ganzenwie das Ding praktisch notiert ausallemwas in ein nun in derInformatikinteressiert ist die Komplexitätin Anführungszeichen zunennt sich das dann die Komplexitätdieses Algorithmusgemeint ist dieLaufzeitwie verhält sich die Laufzeit des Algorithmuswenn verschiedene Anzahl ein Eingabegrößenhabe was passiert wenn ich den mit zehn Sachen startet sie in Sachen Sortieren was passiert wenn ich den mit hundert tausend ?? zwei tausendStatewie verhält sich die Laufzeit?? wird die Laufzeit etwa proportionalzur Anzahl sein wird sich schwächer steigen wird sie stärker steigenPunktdas wäre dieLaufzeit Komplexitätan das Komma letzter einfach hier mit Stoffenin tausend ?? sind vielRaum ich baue noch bisschen was drumrumdamit ichverschiedene anzahlenan Elementen ausprobierenkann ich bei mir noch ?? Schleife drumrum vorwiegendähm als es dann gerneanwie viel Eingangsdatenman hat wie groß die Datenmenge ist mit der man rein gehtfange gleich mal an mitfünf Sachen sortierensind tausend ist ein bisschenlangweiligist aber maximal hundert dann am Endeunddass ?? sich in einer Schritten machen es soll nicht erst fünfter zehnter sechs Satiren unter dem Sortieren das ich ein bisschen langweiligist ?? viermal ähm mal gleichzweidas immer das Doppelte nimmt also Saison machen fünftenzehn zwanzigvierzigachtzigin diesem Falldasob ich Messwerte bestimme stellt sich physikalischesExperiment vor dass es jetzt ein dramatisches Experimentich messegleich die Laufzeit ?? ganze Laufzeit aber so ungefähr etwas wie die Laufzeit meines Programmsfür verschiedeneGrößen der Eingabedatenstartermit Satire fünf Sachendannzwei Satire zehn Sachen Satire zwanzig vierzig achtzig Sachen und komme jeweils möchte jeweils anguckenähmwie viel Aufwand das istdie wächst der Aufwandmit der Anzahlder Eingabedatendas ist eine ganz übliche Fragedanngerade mal gucken das heißt ich muss hier auch nur inmir ich muss hier auch nur in Sachen mit Zufallszahlenfüllenhier muss ich sagen Satire ähm davonwenn ich sage hundert sollte eigentlich auch sagen hundert?? das ganz offiziellin C plus plus würde man es was mit KunstschreibeninSee schreibt man jetzt was von wegen die feinenRessorts wie maximum numberElementshundert?? dann kann ich hier die hundert einsetzenund hier die hundert einsetzen und wenn ich mich gleich entscheideich hundert als maximale Zahl zu nehmen ?? zwei hundert schreibe ich einfach die zwei hundert drei ?? und über einen ganzen Programm steht die zwei hundert ??so in jedem ?? automatisch durch mit fünfzehn und so weiter aber ich muss natürlich noch irgendwie erfahren was raus kommtund er muss irgendwie mitzählenwas man streng genommen machen müsste ist tatsächlich jetzt hier die einzelnen Befehle mit zu zählen anihr haben wannsetzen was auf null hier vergleicheich die addiere ich was was auf null setzen vergleichen was addierennoch was abziehen?? wir zwei vergleichenwir was zuweisen und so weiter eigentlich müsste ich jetzt zählen wie viel Befehle ausgeführtwerdenum das bisschen aufwendig was ich tat stattdessen einfach Zähne istwie viel Vergleiche gemacht werdenganz dreist bevor der Vergleich gemacht wird jährlich einfachdas istPi mal Daumen eine Konstantemal die Anzahl der einzelnen Befehle für jeden Tüv Vergleich wird es noch soundsoviel andere Befehle geben Pi mal Daumenund weil ich faul bin zähle ich jetzt einfach nur die Zahl der Vergleichüblicher Trick bei den Suchverfahrenmerke mir das in irgend einer Variablen die Anschein kaut heißt die muss ich leider jetzt außerhalb bauen ??ich das so baueich auch noch irgendwas übergeben oder ähnliche Säuglinge sogar ganz falsch war das einfach außerhalb ?? globale Variable außerhalbganzjährig jeden jeweils mit Vergleiche gemacht werden Beistrich die natürlich dafür sorgendass ich erst mal die Zahlauf null setzt sie jedes Malbevor ich das macheund dahinter baue ich jetzt einfach ?? Ausgabemit der Funktion Print effektiverNuss am Rande hatten Pitt vermitteltdanndas erste Saison ?? Zeichenkettedie Saatwie ausgegebenwerden solldas Format die Format Zeichenkette und was möchte ich ausgeben schreibe ich dahinter ?? ich möchte dieses en ausgebenund ich möchte natürlich hierdie Anzahl ausgehtandir vorne sage ichdas Format sie können einfach jede Zeichenkette angeben dann wird nur die Zeichenkette ausgegebenund wenn sie sie irgendwo Prozent die reinschreibensetzte diese Zahlan diese Stelle in die Zeichenketteund wenn sie noch malirgendwoProzentdie reinschreibensetzte die zweite Zahl an die ZeichenketteKomma ich bin jetzt einfachmal Faulbach noch folgendessoll das ausgebeneine Zeichenketteder ersten Stelle steht diese Zahl ähm die Größe der EingabeLeerzeichenund einer Zweigstelle hoch Prozent die natürlichenProzente an der zweiten Stelle hier stehteinfach die gemessene Anzahl an Vergleichund damit subsumiert sei ?? noch Zeilenumbruchauch schon gesehen das Sonderzeichenfür Zeilenumbruchist Backslash inder erzeugte Zeit dahinter nochvor sich diese Sen hat wieder nichts damit zu tun dass er nicht der Name einer Variablen dieses Backslash N ist der Nameeines Sonderzeichensnull einneue Zeiledamit sind es geht brauche ich hier noch?? Standard ein Ausgabe glitzernderInput Output Standard AWO in CloudSC Uppsala ISTdas CDPunktHichglaube dann ist alles da wohl sein mussKomma sondernich brauch das Terminal FensterDesignausgabegeht es TerminalfensterdieSeele ?? tritt erst bei den Makrokontrollenso selten vorkommt?? ich dann Terminalfensterfür den Chip der ?? von Auto verbaut esdie habe ich es ausgerechnet Terminalfensterunten sollte ich eine Liste sehenAnzahlund Anzahl der VergleicheGröße der Eingabe soll ich sagen und Anzahl der Vergleichalso erscheint mir zumir sagen zu wollen wenn ich fünfwenn ich fünf Sachenin der Liste habe brauchte zwanzig Vergleich wenn ich sie in Sachen ?? ist ?? neunzig vergleiche dreiundachtzig Vergleichweiter gucken ob ich das sie tatsächlicheine TabellenkalkulationLebendigkriegeschönokayKlammer zu Zusammenhang anguckenoffensichtlichein quadratischer Zusammenhangdas sodann die üblichen Diagramme die man bautdanndie auf der x-Achse habe ich die Größe der Eingabewie viele Daten sind in meinen Algorithmus reingegangenund auf der Y-Achsesteht etwas die Laufzeit beschreibtwie gesagt ja ich jetzt einfach gezählt wie Vergleiche gemacht werdenBeistrich müsste man sämtliche Befehle drin vorkommen aber die Zahl der Befehle wirdetwa proportionalzur Zahlder Vergleiche seinder Zusammenhangsieht ganz schwerquadratisch aus als ob hier ein Vielfaches vom Quadratstehtdas können wir uns noch malder Theorie anguckenoder ein Programm anguckenwarumwird dasquadratisch werden die Anzahl der Vergleiche bauen wir die quadratischguckt sich in der Tat an wie oft denn jetzt welcher Teil des Algorithmusdurchlaufenwir sind die äußere for-Schleifedie wird einmal durchlaufen nur bis in minus einsdie also for-Schleife wird einmal durchlaufendie innere for-Schleifewird in minus eins Mal durchlaufenan dieser Stelle komm ich also ähm mal N minus eins mal vorbeiwenn ich hier mit tausend reingehe würde ich hier tausend neun hundert neunundneunzig mal an dieser Stelle vorbeikommenkönnen ?? gucken ??so richtig verstanden haben ich gerne mal einfach den theoretischen Wert ausrechnen muss sagen okay ich würde annehmen in der Theorie das ist ähmmaleins wenigerokay das gut aussie sehen unsere Theorie fast hundertprozentigmit der Funktion jetzt zusammendas war ja auch einfachdiese Schleifen hier laufenimmer bis zum Ende durch ich kannrelativ einfach Vorhersagenhat die Feinfühligkeit total billig vorhersagen wie häufig diese Schleifen ausgeführt werdendannaber das ganze mal bisschenbeschleunigen das ist noch nichtwirklich geschickt man ganz minder einfachen Maßnahmebesser machen was fällt Ihnen ein wie man das verbessern könnte wenn sie sichihr das noch mal überlegenKommaob abstrakter malenim ersten Durchgangim ersten Durchgang sorge ich dafürdasalles ein Schritt weiter läuft was zu schwer ist dann kommt derzweite Durchgangsorge dafür das alles wasgrößer ist ein Schritt nach oben kommt der dritte Durchgang sorge dafür das alles was groß es ein Schritt nach oben kommtPunktverdient aber was auf was man geschickter machen kann als bishereinebillige Art das zu beschleunigen wäre folgendes kann er schon passieren das ich irgendwann jetztsich irgendwann jetzt zwischendurch fertig binmitten drin bin ich schon lange fertigdann möchte ichabbrechen wenn er zwischendurch schon zitiertes möchte ich jetzt nicht immer weiter immer weiter machen soll einfach sagen ?? Feierabendjetzt herauf und ich möchte mit kriegen das er schon sortiert ist und dann nicht wieder von unten anfangenund die Bläschen aufsteigen zu lassen das wäre mein erster Gedanke wie kann ich mit kriegen das er zwischendurch längst datiert istNa wenn sie feststellen sind einmal durchgelaufenauf der Suche nach Bläschen die man austauschen kannund es ist nicht passiertdann ist das Ding sortiertnoch andere Sachen die man machen könnte der Anfang hier scheint relativstabil zu sein ?? am Ende wird er ausgetauschtaber das rustikale Vorführ wird aber nur das hier an wenn ich einmal durchgelaufen bin und ich habe nirgendwo getauscht ?? bin ich fertig dann scheint sie alle in der richtigen Reihenfolgesteht also merke ich mirob ich irgendwonoch welche getauscht habe ?? eine Burschenvariablesinnvollerweisenun überlegen wie ich die nennewerte ich einfach dann zu nennenbin ich schon fertig weil das Ding sortiert ist am Anfang einer Durchsage noch nicht fertigmachen sie keine for-Schleifemehr sondern ich sage?? Pfanne so lange unten an wieder noch nicht fertig bist weilNorddannJahres ?? mit dem dannsehen jetzt in einer Endlosschleife laufen ich setze das dann auf volkssagesolange du nicht fertig bist mach ?? weiterdas dann wird aber nie aufWaage setzt also werde jetzt jene Endlosschleifelaufenanwas muss ich mit dem dann machen welches bewertet sich dieses dann und wodurch das danndas dann soll mir am Ende dieses Durchgangs hier sagen nachdem das vorher durchgelaufen?? soll mir das dann sagen ob in diesem Durchgang noch getauscht worden ist wenn getauscht worden ist dann ist er im Zweifelsfall nicht fertig dann ist vormalswenn nicht getauscht worden ist wenn ihr kein einziges Mal getauscht worden ist dann kann ich dann auf Drew setzen dann bin ich fertig kein einziges Mal getauscht worden?? unterbringen das in irgendwelchen Stellen jetzt dann auf Trude Erfolgs gesetzt wirdwenn nie getauscht worden ist soll dannauf Drew stehen dann sind fertigwenn auch nur ein einziges Mal getauscht worden ?? soll dann auf Holz stehen ?? nicht fertigdas schreibe ich darein wenn auch nur ein einziges Mal getauscht worden istsind wir nicht fertigdurch vorsichtig sein ansonsten wollen wir fertig sein das heißt ich müsse jetzt obendrein sagenbevor jetzt hier anfangensetzen immer dann auf Thrunsowassolange wir nicht fertig sind läuft die äußere Schleifezeitlichspekulativich bin fertigund gehe dann die ganzen Vertauschungdurch und sobald eine Vertauschung wirklich ausgeführtwird sag ich ich bin nicht fertigdas heißt es reicht eine Vertauschung hier um ihn herum in die nächsteSchleife gehen zu lassenorganisiert angucken was das gebracht hat?? ich mirgeradeob sie was falsch gemacht?? sehr schönwer in C tot voll zuwendet sollte gefälligst auch Standardpool inkludierenWasserverlaufen ?? das überlaufensofünf sechzehn ?? vergleichendas sind die neuen Werte zu sehen jetzt sechzehn statt zwanzig vierundfünfzig statt neunzig drei zwei drei statt drei hundert achtzigelf siebzigster fünfundsiebziges ist etwas besser geworden aber letztlich rasen viel schneller gewordenauf jeden Fall hat man mit einer winzigen Änderungdannschon nach etwa siebzig Prozent vielleichtALGsiebzig Prozent derursprünglichen Anzahl nur nochmit einer billigen Änderung und dass das Programmlangsamer geworden wärewas ich hier habesind ja einfach jeweils Zufallszahldes Wissing geflogen kann ich hatte mit jeweils fünf Zahlen ausprobiertmit zehn Zahl mit zwanzig damit wird sich damit achtzig Zahlen ausprobiert?? diese Zahlen anders gewesen wären wenn die zum Beispiel sonst sortiert gewesen wärendas viel schneller geweseneiner sortiertenFolge reingehenmacht dir nur den ersten Durchgang und stellt fest ist sortiert und ist fertigals je nachdem welche Zufallszahlregeneriert worden sind für die fünfzehn zwanzig Zahlen ist das Ergebnis ein anderesdas ganze jetzt ein bisschen seriöser zu machenBeistrich das mit mehreren Folgen Zufallszahlenjeweils ausprobierendas baut jetzt noch einamalsofür jedes ähmHaus jetzt obendrein noch eindass er mehrere Experimentemacht er Sachs mit fünf ?? mobilesX mal ausmitZähnen probier ich sechsmal auseinem oder dass man jetzt aber erRunde oder sowas??ereiner der dich jetzt auch gerne eine Variable dafürund eben keine Variablennamenkonstantedafür nennen was sieKunstin undan der Stelle kann es mit Konzert in C schreiben aber der Schirm sich an die Feinheitziemlichäh konsistentfinden wir den malmanKlammer auf Frau unsschreibe ich meinen Kleinbuchstabenobwohl die in C plus plusgerne großgeschrieben würdeund den Javanumber Franceabermals jedes Mal probiere ichzehnmal ausso zehnmal ausprobierennächste Rundeall das?? dass all dasist innen drininder Formdas ganze zehnmalmachenwas wären interessante Messergebnissewenn ich zehnmalMessewas könnte mich interessierenich mache meinen Versuch jetzt zehn mal jetztwas will ich dann insgesamt ausgeben wollen?? nicht ThemaMesse ein erster Physikladeninteressiert mich der Mittelwert es wäre ?? die durchschnittlicheLaufzeitan um mich würde auch noch der größte interessieren wie schlimm kann es maximalwerden wenn ich richtig Pech habe mit meinen Zufallszahlenoder was nachher eben sortiert werden soll wenn ich richtig Pech haben wie schlimm kann es denn überhaupt werdendie beiden will ich bauen den größtenraus findenund den Durchschnitt rausfinden?? gerade sind es geschickt machtfür den Durchschnitt brauche ich die Summeim ?? VermerkinsDeutscheReich bestimmt erst mal die Summe sowas erst mal ?? Summe bestimmensoundfür den größtenMaxnursoin der Summe werde ich den ganzen Kram jetzt auf summieren bin ich hier fertig bin sage ich Summe ist plus gleichK unddie aktuelle Zahl jeweils dadrauf summierenund angeblich ihr ebendiese Summedurch die Anzahlder Runden ausjetzt weitere ganze Zahl gerundet sei sodieSumme durch die Anzahl der Runden wäre der Durchschnittswertden ich da habees möchte ich obendrein auch noch das Maximum habenwir schon mit gepflegtKomma hinschreiben wie die Ausgabe sein wird?? feuchten Knochen Prozent die davorbereitsZahlenwar in Thatchers dezimal ausgebenmit Leerzeichen dazwischendie Größe der Eingabeden Durchschnittswertedes Themas letztes noch MaximumdenmaximalenWertdasarrangierenjawie komme ich an den maximalenWert für die Summe summieren sich auf was mache jetzt fürs MaximumLeertaste Gruppen jeweils nach ob der neue größer ist als das bisherigeMaximumpflegen das Maximum mit das Maxon der erstesersten beiden das Maxim ersten drei der ersten vier und so weiter und wenn der neue größer ist als das bisherige MaximumAccountgrößer Maximumdann müssen sich anscheinend den neuen merkendas ist dann der bisher größtesein MaximumbeiAccountsookay das müsstefunktionierensammel jetzt also massiv Statistikeneinvon diesem Algorithmussieht's dann auswas habe ich es also gelernt wenn ich mit fünfZahlen zum Sortieren reingehebrauchte im Mittelfür diese Zahlen Details gewürfelt habe braucht der Mittel vierzehnvergleicheaber schlimmstenfallszwanzig vergleicheaber wenn ich mit zehn Zahlen reingehe brauchte im Mittel vierundsechzig vergleiche für die Zahn sie jetzt gewürfelt worden sind ?? ein stabiler Wert hier und schlimmstenfalls neunzig vergleicheaha und was ist da passiertin der Tat in ist zu klein in funktioniert ja ?? auf der Maschine mit sechzehn Bit so es gibt bis zwei ?? dreißig tausend noch was und wenn sie weiter zählen Hansi patzig dann minus zwei ?? dreißig tausend noch was wegen Zweierkomplementder alte Ärger mit den Zweierkomplementdiese Zahl wird zu großfür den Intel auf dieser Maschinealso nämlich ein langsinnvollerweise für alles was jetzt zählt nehme ich dafür auch ein Lok nehme man weiß ja niewas ?? anderswo überlegen wie großes werden kann das aber schwankte es mal langdas bleibt soPunkt noch diese Summe hier soll ich als schlank machenMaximumsinnvollerweise auch als lang wenn dashierein Onkel istokayversus ?? bei dem Print noch sagen?? gucken dass der Compiler an das Compiler nett gesagt an das sowiesoder Compiler es nett und sagt das sowiesoangemessen kompatibel mit Korrespondenz vom String wieder eine sehrschöne Fehlermeldunger will mir sagendiese Zahl hier Summe durch irgendwas und diese Zahl hier wechseln sie der gleich zweimal diese Zahlenpassen nicht zu Prozent D Prozent D gibtden Thatchers aus aber keine Lokzahl das ist jetzt blank durch Inter char ist lang und das Ent misslangder Wille ein LED habenLangzeit dezimal ausgebenso aber nunokaydas sie besser aus es waren also fünf tausend irgendwasetwas ernstererzählt hatuns das anguckenmanman gucken ?? wie schön der Zusammenhang oder wie schlecht der Zusammenhangzwischenmittlerer Dauer und maximalerDauer istEinfügenDiagrammsiesehen diese Beschleunigungsmaßnahmebringt im Endeffekt nicht vieldieWassermann jetztOrangekurvedas ist der maximaleWertund die blaue Kurve ist der mittlere WertamUnterbeschleunigernicht viel gebracht in den sie gucken zwanzig neunzig drei zwei vierzwanzig neunzig drei zwei vierkommenist nicht besser geworden und wahrscheinlich ?? man die richtigen Zufallszahlenwürfelt aber auch wieder hier zwanzigneunzig und dann nicht drei hundert zwoundvierzigsondern wie hier drei hundert und achtzigundfünfzehn sechzigstatt der vierzehn zwei achtzig wenn ihr so die richtigen Zufallszahlenauftreten ?? ich ?? genutzt zehn verschiedene ausprobiertwenn ich das weiter ausprobieren wird dieser als Maximum worst case hat es gern dieses Maximumwird sicherlich noch anwachsendann werden wirauf dem selben Niveau sein wie vornedas Iso die beidenLaufzeitendie man sich typischerweiseanguckt was ist die mittlere Laufzeitund was ist die schlimmste Laufzeiterfreut undworst caseund was man angehtist typischerweisenichtjetzt direkt die konkrete Formel N mal in minus einsoder was ähnliches hatten an sondern ich gebe das anatolische Wachstum an sich das nenntwächst diese Kurvequadratischschlimm ja kubischwie auch immeralso was man an gibt es folgendesAsymptote Wachstumichhabenur nach gucken theoretisch eine LaufzeitvonN mal N minus einsalsoich habe eineLaufzeit von einmal in minus einsmal irgend eine Konstanteder sich wirklich die Anzahl der Befehle habe einmal in minus eins ist die Anzahl der Vergleichemit Optimierung ist etwas besser geworden und wahrscheinlich viel besser gewordenähmmal irgend eine Konstante um von der Anzahl der Vergleicheauf die Anzahl der Befehle zu kommen?? beschreibt jetzt nur das Wachstum dieser Funktionensie das ausmultiplizierensteht der ja zehnmal in Quadrat minus zehn mal inich beschreiben das Wachstum dieser Funktiondas heißt in diesem Fall dann groß O vonN Quadratso nennt sich dasmathematisch wichtige Überschreiben ist Element vonviele Leute schreiben ja gleichan Fragezeichen zwei ganz dreisten Elements dieses groß O von ähmirgendwassoll eine Menge von Funktionen sein alle Funktionendie AsymptoteQuadratwachsenAsymptotein Quadrat wachsen soll heißenwenn sie das Verhältnis bildendieseszehnmalin Quadrat minus zehn mal en durch einQuadrat dass dieses Verhältnisbeschränkt bleibt?? funktioniertes schlimmstenfallssowas wie eine Vielfaltan die ein Vielfachesmal in Quadrate soll das heißen Punktmit dieses Verhältnis bilden die Funktion durch ein Quadratwird esbeschränkt bleiben wenn in über alle Grenzen wächst das Komma leicht nachrechnensind sie mal im Quadrat durch ein Quadrat ist sieminus zehn mal endlich ein Quadrat ist sie durch eindas wird auf jeden Fall kleiner gleichziehenbleibendas bleibt beschränkt ein Quadrat über alle Grenzenam?? gebe es nochandere Klassen an Funktionen aus das es jetztsicherlich eine Funktion von der Klasse die höchstens so schnell wächst wie ein Quadratandas wäre eine garantiert größere Klasse an Funktionenwasin wo ist diese Funktion ja auch drindie Dachluken nicht an die Fusion aber sie haben recht das wäre garantiertauchin Hof und wie hoch denn wenn sie das hierdurch ihr Hochent teilen dasselbe durch ihre ?? in ein Polynom durch die hoch ähm ist das ja nicht nur beschränkt es gibt sogar gegen null das jedoch ein Wind garantiert gewinnen endlich das es garantiert in dieser Klasse auchanwas ich jetzt dachte?? eigentlich ein hoch dreiwenn sie richtigen hoch drei Teilen ist es auch gerade beschränkt aber es ist nichtes ist nichtsin der Klasse scheint es jetzt meine obenes ist nichtin der KlasseBuch von Ndas ist nicht in der linearen Klasse das wächst stärker als Lin ja wenn sich unten nur durch Entteilsteht hier zehnmal ähm das ganze nicht beschränkt?? in der Klasse ist es nicht das es in der Klasseder Funktionen dieAsymptote quadratisch wachsenoder langsamer nicht in der Klasse die Asymptote stehen ja wachsen oder langsamermit dieser O von groß O von irgendwas Notationschlecht man sich dann an dieser Stellebei den Algorithmen von morgens bis abends rumzu welcher Klasse von Algorithmen gehört dieser Algorithmus der gehört zudieser Klasse von Algorithmen und deshalb gehörte automatischzu dieser Klasse von Algorithmen mit N hoch drei und N noch zweiundvierzigdeshalb hat gerade automatischeKlasse von Algorithmen mit EVNdiese ?? wirklich super langsamdasist eine Abstraktion der Laufzeitman guckt sich nicht an wie viel Sekunden läuft das Ding odereigentlich auch nicht mehr wie viel Befehlemuss der Prozessor ausführen sondern sich ganz abstrakt an wie diese Laufzeitwächstwenn ichdie Anzahl meiner Eingabe die Größe meiner Eingabe verzehnfachenwie dieser Algorithmusim Endeffektdie Laufzeithöchstens für hundert fachen und wenn ich meine Eingabegrößevor hundertfachewird dieser Algorithmus dann die Laufzeitim Endeffekt höchstens vierzehn tausend fachen das ist der Gedanke im Hintergrundist dann nicht hundertprozentigdas was dann auch herauskommt Komma dass der Gedanke im Hintergrundwenn ich meineEingaben groß umso soviel ändere was wird passieren mit der Laufzeit des Algorithmusdas ?? damit mit Weg dargestellt Asymptote ich für sehr große N man weiß nicht was für kleine en passiertwas das Ganze so bisschen zweifelhaftmacht die theoretischen Informatikerbeschäftigen sich hier dann eben Jahre mit solchen Abschätzungenüber Laufzeitenaberes kann sein dass das in der Praxisvöllig irrelevant ist was sie da produzierendie Can haben dass ein Algorithmusquadratische Laufzeit hatdas Verzeichnis nicht mehr so weltweitzuhaben und dieses hierquadratischhochgehtdass dieser Algorithmus wovon im Quadrat ist weil das jeder zum Schluss maximale Parabel wirdinkann ihn aber passieren das in Algorithmus haben der scheinbar schlechter istO vonE hoch N das wäresuper schlecht normalerweiseaber der Algorithmus mit wovon Eogent kann im wahren Leben so eine Laufzeit habendass der für alle anzahlen die interessant sindBeistrich dass von N gleich null bis N gleich eine Million immer noch besser ist als dertheoretische Untersuchungüber dieses symbolische Wachstummuss man mit sehr viel Körnchen Salz genießen es kann sein dass ein Algorithmus der auf dem Papier super schlecht aussiehtin der Warenweltschneller ist als ein Algorithmus der auf dem PapierKomma besser aussieht in Quadrat wäre nicht gut aber sehr zumindest besser auf aus auf dem Papierweilder Unterschied zwischen diesen beiden Funktionendass die ganz flach anfängt und dann explodierteinfach von diesemgroß Onicht erfasst wirdalso Vorsicht eine StelletypischerweiseKomma mit diesen Abschätzungen was anfangen aber man muss siemit einem Körnchen Salz nehmensodas wäre unser Standardalgorithmusjetzt hier gewesenBubblesortnetterweiseist in den meisten BibliothekeneineSortierfunktioneingebautalso bevor sie anfangen sowas selbst zu programmierenund dabei etwas bauen das dann sehr langsam wird im Zweifelsfall oderwas sogar fehlerhaft ist benutzen Sie das was eingebautist nicht Zeichen ist im Verhältnisdazu was die eingebaute Funktion kanndie nennt sichNCQ sorgtwas an Quicksort erinnern soll es ist im Standard nicht festgelegt das Essen Quicksort sein muss Punkt es wäre keine dumme Wahl dafür?? man weiß aus dem C Standard nur wie sich die Funktion von außen verhält nichtwie sie in gebautes auch wenn sie Grußwort heißtunser Absatz Akkus sorgt Quicksortsoll das sagen aber wie gesagtweiß ich was drin steckt sie heißt einfach Grußwortan und ist auch hier in derStandard App definiertandiesem Quicksortgebe ich auch wieder des Gräber sortiert werden soll Kommaich gebe ihm wieder die Anzahlder Elementedie in diesem ?? stehen zum Sortierenjetzt wissen wir sind Regiesolche Bibliotheksfunktionsind dazu gedachtmit allem möglichen Krempel zurechtzukommendiese BibliotheksfunktionsollInteresse Tieren können Sie soll Zeichenketten sortieren können Sie soller WarenkörbeSortieren können Sie soll TelefonnummernEinträge sortieren können alles mögliche sollte Sortieren könnendas ungeschickte istdass sie erstens nicht weiß wie groß ein Datensatz ist ich sage hier was das Gerät ist und wie viel drin stehenmuss er noch sagen wie groß das ist das ist das dritte Argumentund dann muss ich auch noch sagen wie dennzweiTelefonnummernverglichen werden oder wie zwei Zeichenketten verglichen werden oder wie zweiWarenkörbe verglichen werden das kann sie ja wirklich wissen dafür sind diese bei mir nötig das habe ich über mein Bubblesort eingebautder weiß das sindbitte etwasan der weiß in der das vergleiche bei dieser allgemeinen Quicksort Funktion muss ich das einsacken erst maldie groß die einzelnen Datensätze sind in diesem Essays stehen dafür gezielt wieder das Zeiss aufseinen Fall natürlich von ihmwas auf dieser Maschine einfach zwei ist ein in der Maschine zwei Beistrich sechzehn Bit könnte auch zwei reinschreibenaber dann wird es von einem Prozessor kompilieren zum Beispiel den Pentium kombinieren Verstärkungendeutlich mehr sicher zwei sechsundvierzig wir sinddas ist die sichere Wahl scheint da nichts weiter anderen Schreibens rein die Größe eines in den beiden stimmt es auf jeden Fallan und die hinten ersetztüberraschendmuss ich sagen werde zwei vergleichen kann ich kann ihm hier alles mögliche für die Füße werfen an Elementennicht nur ganze Zahlenaber zum Ausgleich muss ich denn sagen wir zwei davon vergleichen soll rechnen die Funktionnicht als Übergeber zu vergleichen mal Fachkompergeben ihm eine Funktiondiese Kriegs der Quicksort Algorithmus ruft diese Funktion aufWasser mein Praktikum ja schon mal dass das Systemihre Funktion aufruftund das wieder vorQuicksortruft meine Funktion auf Vergleich damit zwei Einträge ich weiß selbst hoffentlich wie zwei Einträge vergleichen?? kommtauch ist eine Funktionvor?? davor eine Funktion die jetzt kommt der Nennerkönnen sie auchkeinen dann schreiben Sie unten kahl und schreiben darum auch Karlanund der C Standard gibt vor wie diese Funktion aussehen muss damit funktioniertund zwargibt sie eine ganze Zahl zurückund sie kriecht zwei Sachen übergeben?? schreibt das erst mal soeinSekundärfunktionBeistrich zwei Sachen und soll mit einer ganzen Zahl sagendie sie dann zurückgeht wenn man es möchte mich findeda ist esdannso mit einer ganzen Zahl sagenob der vordere größer ist als der hintereob der vordere gleicht im hinteren ist ?? der hintere größere Satz erfordereamder Algorithmus gibt den ?? zwei zum Vergleichendas sieht jetzt bisschen Bild aus KunstVoithSternchenX der eine zu vergleichen und der andere KreuztransportsternchenY der andere zum vergleichendann auf dieses Wollsternchenwill ich an dich gar nicht so viel eingehenbisschen abgedrehthabenansatzweise was das bedeutet was er ihnen gibt ist die Hausnummereines Dings im speichererweisenoch gar nicht was da steht stehender Kundennummer anstehenderEurobeträgeStänder in der Zeichenkettedie Filterfunktionweiß nicht was da steht im Speicher was ihn gibtist ein Zeiger auf irgendwas im Speicher das es sowas Wollsternchenist ein Zeiger auf irgendwasVoith kennen wir alsamich lasse einenich gebe kein Parameter für ?? Funktion würde ich gebe nichts zurück an dieser Stelle heißt esein Zeiger auf irgendwas dieses X ist ein Zeiger auf irgendwasdas System weiß nicht worauf es Zeichenund das was da steht was ich nicht anders ?? dieses Konzept der Werte an der Stelle steht wird unverändert gelassenandas ICDignorieren ich kriege zwei Sachen die ich vergleichen soll das ist der Gedanke dahintermit so kommt der Funktion soll ich jetzt sagen ob der eine größer ist dann der größer ist beide gleich sind in welcher Reihenfolge stehen sollte eine zuerst eine ZUERSToder Circa zwei gleich sindKomma kleine technische Tricks muss er wieder auf meine ganzen Zahlen kommenhier habe ich Anzeige auf irgendwasX ist ein Zeiger auf irgendwasamden verwandle ich in ein Zeiger auf ein Kind weil ich weiß das in meiner Listein den Schuss stehen kann ich das machen und dann nehme ich diesen Zeiger auf ein Kind und holte den Wert rauswenn dasTotalgleiskünstlerische laut Medien begeht tizianheute um dieLaufzeit und nicht um die technischen Tricks hier mit Xals ich wohl aus dem ersten den echten Wert raus und ich wohl aus dem zweiten den echten Wert rausund Sekundärfunktionsoll jetztmeldenob der erste größer ist oder der zweite größer ist oder beide gleich sind wenn der erste größer iststets einem Standard wenn der erste größer ist als der zweitesolche kommt der Funktion eine positive Zahl zurückgebengrößer ist als der zweitegebe eine positive Zahl zurück sinnvollerweisenur eins dümmste positive Zahlwennordentlich kann es wegen des Returns aber schon auswenn die beiden gleich sindewignull zurückdas sagt der Standarddie Reihenfolge egal ist Beistrich leicht über Null zurückund ansonstengebe eine negative Zahl zurück ?? ist der zweite größer gewesenzuwasist an Dortmunds Sackrhythmusder Vorganggegeben ist aber der Quicksort Algorithmus ruft meine Funktion auf wenn immer was zu vergleichen ist oder meine Funktion aufPunktich kann in die Liste geben sah gemäß den sechs Stück in der Liste ich sag ihm jedes davon ist zwei Bytes lang und ich sagen wie zwei davon verglichen werden sollenist das komplett abstrahierte nimmt sich der Algorithmus einfach noch was da in jeglichen Witz stehtund schiebt das durch die Gegend muss nicht wissen dass das Zahlen sind oder Telefonnummernganz losgelöst vereinbar sei konkret stehtDiskussion ?? besonders auch nochmit selbst Discount hieralso bei jedem Aufrufder oben rein bei jedem Aufruf soll mit Zellen im ?? ins Vergleichenmitgezählt und jetzt ?? ich eben auch jedes Vergleichen mitKomma das ganzeamMal in Relation setzen zu dem Bubblesortist dasselbe mit dem eingebauten Vergleich?? gucken ob der eingebaute Vergleich ?? wirklich funktioniertkann ich Herrndas man dann weg weiter vorund gucken ob das hinhautso bevor der ausgeführtist steht daeine Folge von fünf Zufallszahlenzu rufe ich die Funktion aufwunderschön und sie hat mirsortiert von kleiner groß wie sich das gehört also scheint soweit zu funktionierenweg und wieder raus und lass sie nur bis zu Ende laufensodas hat er jetzt an Messwerten wenn Sie wollenfür die eingebaute Funktionmuss meine zusammenschreibt das malvor Ecke das war unser Bubblesort nochund nun der eingebauteKursortzeichendas angucken der unten hatte ichmaximalfünf tausend sieben hundert irgendwas und der Bubblesort kommt hiermitmaximal acht hundert wenn erachtzig sortiert es alsoum Klassen besser schmeißt das man in ein Diagramm vielleichtdann?? das hier ist Babel Mittelwert gewesengehört das hier warBärbelworst casePCs mitMacshörenSie mit dem Fuß sorgtMittelwertwird für den sollund wir nehmen mal den Macs für den Kursortvergessenund das jetzt inKöln einfügendenDiagrammYokayso sieht's aus??an sie sehen auch bei diesenQuicksortscheint muss ich sagenscheint das MaximumMax vergessen bei diesem Quicksort scheint das Maximumnicht weit über dem Mittelwert zu liegender Musik ?? noch was sagenPunkt der Eindruck täuschtSenke davon ab was für Zufallszahlmannreingeschmissen hat mit den üblichen Zufallszahlenmuss man sehr viele Werte ausprobieren wirklich auf den schlimmsten Wert zu kommen für den groß ??ähm was mit ihr etwas ablesen kann ist der älteste groß Ort relativ stabilSchweiz weit weit unter dem Bubblesort bleibtandie Form dieser Kurve kann man jetzt noch nicht ganz erkennenKomma müsste viel mehr Datensätze nehmendas scheint erstmalig im Jahr zu sein noch ein bisschen weiter baut sieht man das es nicht genial das nimmt schon leichten Knick nach obenaber nicht so ganz so stark wie X Quadratan das groß Kanal für den Quicksort überlegen wenn es in ein Quicksort ist ?? ich weiß läuftetwas laut Standard nicht das diese Funktion eingebaut ?? zum Kuh soll wirklich ein Quicksort ist sie heißt traditionellerweisesowenn sie einer wärekann man sich überlegenwieder das Laufzeitverhaltensein muss Bubblesort ?? muss im Quadrat überlegtman im GussortQuicksort mit seiner ist Komma nicht auch noch überlegenamQuicksorthat folgendenGedankenichnehme mir die Elemente diesortiert werden sollenernenne einen davon zumDreh und Angelpunkt?? wird welchen auch immer man kann sich irgend einen aussuchengute Strategie ist wirklich zufällig einzunehmenman kann auch einfach den letzten nehmenden ehernen Mannzum Dreh und Angelpunkt?? wirdKommaund unser?? sorgt man dafür durch Vertauschungdass alle die größer sindrechts von dem einsortiert werdenvon den verwirrt einsortiert werdenund dass alle die kleiner sindlinks davon einsortiert werden das kriegt man mit einfachen Vertauschunghinwas ich damit im ersten Schritt auf jeden Fall erreicht habe ist das alle Zahlen kleiner als dieser ?? und ?? Punktlinks stehen alle Zahlen größere ?? von rechts stehendas heißtder JEDE steht schon an der richtigen Stellees kann sein das hier noch mal umgetauscht werden muss eine kleine Anzahl dastehen und wenn ihr alle größeren Zahl dastehen Beistrich kann es hier noch mal umgetauscht werden soll Beistrichandie vor dieserdas sein Wirrwarrzweiundvierzigund hier habe ich was trennen wie dreizehnund achtundneunzigund siebzehnund sieben??für den ersten Schritt erreicht werden dass die achtundneunzigauf der Seite steht und dass die sieben und die siebzehn unddie dreizehn auf der Seite stehen?? es ist nicht gewährleistetdass die in der richtigen Reihenfolge stehen nur dass die Gans nur alle die kleiner sind als diese zwoundvierzig Klicks davon stehen an die größer sind rechts davon stehen sich einfach durch vertauschen hin und ich kann mir zwei Schwankungen der links davon ist der größer als zwoundvierzig dann verdaulich die beidenStädte schon mal auf deiner Seite der Google wieder den links davon an anSehende würde jetzt nicht alle mit kriegen die dahin noch stehen und wissen raffinierterangehen will ich es aber gar nicht vorführen das riecht man relativ billigenAnteil sie nach links alle die größer sind nach rechts und dann macht man das ganzenoch malTeile und herrsche dessen übliches Prinzipbei den Algorithmenman sucht sich hier einsolches Verwirrtelementund macht das ganze noch malalle die kleiner sind als dasauf die linke Seite alle die klar größer sind als das auf die rechte Seitedas macht man hier noch maldas macht man hier nochmals immer wieder immer wieder bis man fertig istdass sie total kompliziert aus man kann sich auch höllisch verprogrammierenKomma das bautaber das wirdschneller werdenals der Bubblesort das ist ein wesentlich intelligenteresist der Bubblesortkönnte sich mal grob ?? muss man gut überlegenwie viel Vergleiche man braucht die Anzahl der Vergleiche AnzahlVergleichum das hier zu sortierenich habe ähm Elementevergleichehier mit dem letzten Ende jedes davon Vergleich mit dem letztendie die kleines N Chips erforderliche Größe sind schräg nach hinten das heißt hier habe ich im Endeffekt ungefährein Vergleich eigentlich nicht Ent sondern ein wenigerdas macht für groß N jetzt keinen großen Unterschiedim nächsten Schrittmit jetzt hier aufteilenund hierum noch mal aufteilenzumal das Upgrade aussieht soum noch mal auf der diese Vergleiche brauchen sich ihrsie wirklich in der Mitte aufgeteiltistwäre das sie ungefähr in Halbesie müssen in halbe Sachen mit dem ein PivotelementwirdEnglisch in ein Quit Element vergleichenund hier müssen Sie nochmals etwa ein halbermit dem Eintritt Element vergleichenin Halle plus innerhalb sind wieder ungefähr ein?? des jetzt noch ein zweiter treibtwenn es sie gleichmäßig aufgeteilt wäre das in Viertel in Viertelfettlistemüsste hier etwa ein Viertelvergleichenmit dem Wirtelementnoch mein Viertel mit dem David Element noch mal nochmals jemand entwickelt ist schon wieder ähmin jeder Generationsozusagendasungefähr ein vergleichewie viele von diesen Generationenhabe ich ungefährich höre auf zu sortieren wenn hier und nur noch ein einziges Element jeweils steht?? dann brauche ich nicht mehrlinks und rechts zu schiebenPunkt die Frage ist als im Endeffekt bin ich in Elemente gegeben habe wie häufig ich durch zwei teilen kann Pi mal Daumen durch zwei teilen kann dass sich in der Mitte liegenaberim Mittelwird es ungefähr in der Mitte liegen anwie häufig kann ich fortlaufend durch zwei teilen wir sind zwei Elemente Darwins vier Teile da sind's acht Teile sechzehn Teile zum Schluss ist das dann einfach der zweier Logarithmus ?? Komma FanblockBlock zweiPunkt zwei von ähmGenerationenso viel schichten werde ich hier untereinander habenwie oft ich durch zwei Tagewenn sie umzweiunddreißigsind ?? vielleichtfünf von den Generation mit vierundsechzig sind brauche ich ungefähr sechs von diesen GenerationRhythmus zwei von ?? und dann komme ichPi mal Daumen ?? natürlich keine seriöse Herleitung aber die mal Daumen komme ich dann draufokay das Ding wird einmalzwei ?? Rhythmus aus N vergleichebenötigenalso würde ich vermuten?? Vermutungim Mittelzurähm mal den zweier Logarithmusaus N vergleichedaswürde ich vermutenda können sich die Informatiker natürlich dannganze Woche lang beschäftigen das sauber herzuleitenaberSommer schon eine Hausnummer?? jetzt mal ganz frech daneben schreiben was heißt dasumdortMax war dasdannunsere banale Theoriewäre also das istdie Zahl ähmmal den zweier Logarithmusloklokvorhandenähmsind zweidaswäre unsere banale Theorieinteressiert sich völlig abwegigfür so etwas was man aus der Tasche zieht sich nicht ganz so falsch aus statt sechs hundert achtundsechziggemessentäglich fünf hundert und sechs raus statt hundert zehn gemessen sechsundachtziggemessen für irgendwas Wochenende wederaus der Tasche zieht eine schlechte Ideeder Quicksortist von dieser KlasseN mallocker ähm so schreibt man das dann auch was es nicht von der Klasse O inder ist nicht genialsondern etwas schlecht aber ist nicht viel schlechter ist besser als ein Quadratslogarithmusist ja eine langsam wachsende FunktionN Lok N ist irgendwo zwischen Quadratund der geradenArm auf halben Wege dazwischenwird derdieser Quicksort mit seiner Laufzeit in lockerer das ist auch das übliche Verhalten für guteSuchverfahrenderBubblesortwächst mit dem Quadratim Mittelder Quicksort wächst mit entlockenwürde das ganz genau anguckt das ihm gesagt im Mittelmuss ich eigentlich auch noch angucken wie schlimm es den maximal werden kannund die Zahlen hier trügenwenn ich wirklichgut verleseneZufallszahlenhabeextrem schlecht fallenwenn wir das hier auch wieder quadratisch werden das ist das komische beim Quicksort ist im Mittelentlockt ähmrelativ schnell aber wenn ich richtig Pech habe mit den Zufallszahlenoder mit Wasser Komma ich sortiere mir das quadratisch werden sie sehen mit dem Paar zu Fall zeitliche gezogen haben wird es nie so schlechtmuss wirklich sehr lange ziehen bis man den ganz schlechten Fall erwischt der ganz schlechte Fall wäredas erhier immer einen einzigen zur Seite stelltBeistrich ganz alleine und dieses hier gibt's gar nicht der steht weiterhin der ganz auf der Seite Unterschiede da wieder ganz auf der Seite brauche ich etwa schlossen sich in Durchgänge und jeweils außerplanmäßigein Vergleich und ich hab wieder was von O zweialso der worst casebei deminder worst casebei dem es tatsächlich wovon im Quadrataber das was ein typischerweise interessiert ist richtig schnell und dass er in der Praxisund deshalb ist dieser Algorithmus eingebautmit den typischenFällenist dersuper schnell und relativ einfach zu behandeln