Quick Sort

Click here to load reader

  • date post

    03-Jan-2016
  • Category

    Documents

  • view

    35
  • download

    1

Embed Size (px)

description

Quick Sort. Mit vielen bunten Farben. Fröhliches Farbensortieren. Wir möchten diese Farbenreihe sortieren. Wir beginnen folgendermassen: Alle hellen Farben bringen wir auf die linke, alle dunklen Farben auf die rechte Seite. Sobald das erledigt ist, sortieren wir die hellen Farben. - PowerPoint PPT Presentation

Transcript of Quick Sort

  • Quick SortMit vielen bunten Farben

  • Frhliches FarbensortierenWir mchten diese Farbenreihe sortieren.

    Wir beginnen folgendermassen: Alle hellen Farben bringen wir auf die linke, alle dunklen Farben auf die rechte Seite.

    Sobald das erledigt ist, sortieren wir die hellen Farben.

    Dann sortieren wir die dunklen Farben.

    Fertig.

  • Aller Anfang ist schwerZuerst mssen wir aber herausfinden, welche Farben hell, und welche Farben dunkel sind.

    Dieses Problem lsen wir so: Wir bestimmen ein Element und nennen es Pivot-Element.

    Alle Farben, die heller sind als unser Pivot-Element, gehren zu den hellen Farben.

    Alle Elemente, die dunkler sind als unser Pivot, ordnen wir den dunklen Farben zu.

  • Wo ist unser Pivot?Am liebsten htten wir ein Element, welches unsere Farbenreihe in zwei gleichgrosse Teile teilt.

    Da wir aber nicht wissen, wo sich dieses Element befindet, und uns nichts besseres einfllt, whlen wir einfach das erste Element als unser Pivot.Da ist unser Pivot!

  • Wie bringen wir die hellen Farben auf die linke Seite?Wir wandern von links nach rechts und vergleichen jedes Element mit unserem Pivot-Element.

    Ist es heller als unser Pivot, ist es bereits auf der richtigen Seite und wir sehen uns das nchste Element an. Ist es aber dunkler, stoppen wir.

    Sobald wir ein dunkleres Element gefunden haben, beginnen wir dasselbe Spiel von rechts.

    Wir wandern von rechts nach links, bis wir ein Element finden, das heller ist als unser Pivot.

  • Wenn wir das so anstellen, sind alle Elemente bis zum grnen Pfeil heller als das Pivot-Element und alle Elemente vom rechten Rand bis zum blauen Pfeil dunkler.Unser Pivot-Element1.Hier oben findest du eine bersicht, auf welcher Rekursionsstufe wir uns befinden.

  • Dieses Element ist heller als unser Pivot-Element, wir knnen also nach rechts rutschenAuch dieses Element ist heller, wir gehen einen Schritt weiterDieses Element ist sowieso heller, gehen wir eins weiterHALT, dieses Element ist dunkler als unser Pivot, sowas gehrt auf die andere SeiteUps, dieses Element ist heller als unser Pivot, halten wir also an!Links haben wir nun ein Element, welches auf die rechte Seite gehrt, rechts haben wir ein Element, welches auf die linke Seite gehrt => Wieso tauschen wir nicht einfach?Unser Pivot-Element1.

  • Gesagt, getan, wir haben nun die beiden Elemente vertauscht und somit ist wieder alles in bester Ordnung!Alle Elemente links vom grnen Pfeil (ausser das Pivot) sind heller, alle Elemente rechts vom blauen Pfeil sind dunkler als das Pivot.Schon wieder dunkler, warten wir also wieder.Nun wandert der blaue Pfeil wieder nach links, bis er ein Element findet, das heller ist als unser Pivot.Stopp, da ist ja bereits ein helleres ElementWieder haben wir zwei Elemente, die getauscht werden mssenUnser Pivot-Element1.

  • Die Pfeile haben ihre Wege gekreuzt. Links vom grnen Pfeil sind alle helleren Elemente, rechts vom blauen Pfeil sind alle Elemente, die dunkler sind als unser Pivot.Das heisst nichts anderes, als das wir den Platz von unserem Pivot-Element gefunden haben:Es kommt genau zwischen diese zwei Elemente, auf welche die zwei Pfeile zeigen!Wenn wir also das hellere Element mit unserem Pivot-Element vertauschen, liegt unser Pivot-Element am richtigen Platz:

    Alle Elemente links von unserem Pivot sind dann heller und alle Elemente rechts von unserem Pivot sind dunkler.

    Stopp, der grne Pfeil zeigt auf ein dunkleres ElementNochmals Stopp, der blaue Pfeil zeigt auf ein Element, welches heller ist als unser PivotDurch den Tausch stimmts wieder: Links befinden sich die helleren Farben, rechts die dunkleren. Wir knnen also mit unseren Pfeilen weiter fahren.Unser Pivot-Element1.

  • Unser Pivot-Element hat nun seinen Platz gefunden, deshalb markieren wir es mit einem Smiley.Unsere Aufgabe war es, diese Farbenfolge zu sortieren. Wir haben diese Aufgabe in 2 neue Aufgaben unterteilt:Wir sortieren zuerst die gelben Farben und dann noch die roten Farben1.

  • Um die hellen Farben zu sortieren, whlen wir das vorderste Element der hellen Farben als neues Pivot-Element.

    Unser Pivot der gelben FarbenZuerst beginnt der grne Pfeil. Da er bereits auf ein dunkleres Element zeigt, muss er wartenAuch der blaue Pfeil muss warten, da er auf ein helleres Element zeigtUm nun die Reihenfolge wieder in die richtige Ordnung zu bringen, vertauschen wir diese zwei Elemente einfach miteinander.1.2.

  • Stopp, jetzt haben wir doch noch ein Element gefunden, das heller ist; warten wir alsoNun ist dieses Element heller als unser Pivot-Element, wir knnen also einen Schritt weiterUnser Pivot der gelben FarbenDa dieses Element dunkler ist, muss der grne Pfeil eine kurze Pause einlegenDieses Element ist dunkler als das Pivot, wir knnen getrost einen Schritt weiter gehenAuch dieses Element ist dunkler, gehen wir eins weiterDieses Element ist sowieso dunkler, machen wir weiter.Unsere Pfeile haben sich wieder gekreuzt, wir haben also auch den Platz fr unser Pivot der gelben Farben gefunden.Wenn wir unser Pivot nun mit dem Element tauschen, auf das der blaue Pfeil zeigt, haben wir das Pivot richtig platziert.1.2.

  • Dieses Element ist also auch bereits am richtigen Platz. Denn links von ihm stehen nur hellere, rechts von ihm nur dunklere Elemente. Deshalb bekommt es auch einen Smiley von uns.

    Die linke Seite sortieren? Ist sie das nicht schon?Ja, aber das weiss der Computer ja noch nicht.Unsere Teilaufgabe war es, diese Farbenfolge zu sortieren. Wir teilen diese Aufgabe wiederum in zwei neue Aufgaben auf: Wir sortieren zuerst die linke Seite.Dann sortieren wir die rechte Seite1.2.

  • Der Computer sieht sich den linken Teil an und stellt fest, dass es sich nur um ein einzelnes Element handelt.Dieses ist selbstverstndlich am richtigen Platz, da es ja gar keinen anderen Platz gibt. Deshalb wird dieses Element auch mit dem Smiley ausgezeichnet.1.2.3.

  • Nun kmmert sich der Computer um die dunkleren der gelben Farben:Das Vorderste wird wieder zum Pivot.Ich bin auch ein Pivot-ElementDer grne Pfeil zeigt auf ein Element, welches heller ist als unser Pivot, daher gehen wir eins weiterDa auch dieses Element heller ist, rutschen wir nochmals nach rechtsNun mssen wir stoppen, da der grne Pfeil auf ein dunkleres Element zeigt Der blaue Pfeil steht bereits auf einem helleren Feld, warten wir mal abDa sich die Pfeile kreuzten, haben wir wiederum den endgltigen Platz fr unser Pivot- Element gefunden. Wir mssen es also nur noch an den richtigen Platz bringen. Wenn wir es mit dem helleren Element tauschen, sind alle Elemente links von unserem Pivot heller, alle anderen Elemente dunkler, genau so, wie wir es uns wnschen.1.2.3.

  • Wir haben ein Element mehr glcklich gemacht; Es hat seinen Platz gefunden, daher kriegt es auch einen Smiley.Wir sind aber noch nicht fertig, schliesslich mssen wir nun wieder die neu entstandenen Teile sortieren. Wir haben diese Farbenfolge in zwei kleinere Farbenfolgen aufgeteilt:Und zwar in eine linke Folge mit helleren Farbenund in eine rechte Folge mit dunkleren Farben.Diese Farbenfolge ist etwas spezieller. Unser letztes Pivot war das Dunkelste in seiner Farbenfolge. Deswegen wurde es zuhinterst eingeordnet. Es gibt also keine dunkleren Farben. Daher ist die rechte Farbenfolge diesmal leer.Das soll uns nicht weiter stren. Wir werden das etwas spter genauer betrachten.1.2.3.

  • Sortieren wir also zunchst die linke Teilfolge:Das vorderste Element wird unser nchstes Pivot.nchstes Pivot-ElementDer grne Pfeil steht auf einem helleren Element, kann also einen Schritt weiterfahrenNun steht er auf einem dunkleren Element, muss also kurz innehaltenDer blaue Pfeil zeigt bereits auf ein helleres Element, muss also auch warten1.2.3.4.

  • nchstes Pivot-ElementDie Pfeile haben sich gekreuzt, also haben wir den richtigen Platz gefunden.Wenn wir unser jetziges Pivot-Element mit dem Element tauschen, auf das der blaue Pfeil zeigt, sind wir der sortierten Farbenfolge etwas nher.1.2.3.4.

  • Da auch dieses Element nun am richtigen Platz steht, wird es auch mit einem Smiley markiert.Leider sind wir immer noch nicht fertig. Wir mssen nun die linke Seite, und dann die rechte Seite von unserem letzten Pivot sortieren.Bei der linken Seite haben wir Glck: Der Computer erkennt schnell, dass es sich um ein einzelnes Element handelt. Es ist also schon sortiert und bekommt auch einen Smiley.Wo bitte schn ist unsere unsortierte rechte Seite? Sie befindet sich hier, es handelt sich wieder um die leere Farbenfolge.Der Computer ist somit fertig, bevor er angefangen hat.

    1.2.3.4.5.

  • Diese Teilfolge haben wir jetzt bereits sortiert.Als nchstes kme jetzt noch dieser Teil.Aber wie bei der letzten leeren Folge merkt der Computer, dass er gar nichts zu tun hat.Wir haben also diese Teilfolge sortiert. Und das war nichts anderes, als die rechte Seite von dieser Teilfolge1.2.3.4.

  • Wir wollten diese Farbenreihe sortierenDas bedeutet: Wir haben die gelben Farben erfolgreich sortiert.Kannst du dich noch an unsere Aufgabe und den dazugehrenden Plan erinnern?Zuerst die Gelbendann die RotenAlso machen wir uns jetzt daran, die roten Farben zu sortieren.Drei Mal darfst du raten, wie wir das anstellen werden: Genau! Wieder mit dem gleichen Verfahren wie bisher.1.2.

  • 2.1.Damit dir nicht langweilig wird, bist nun du dran:Welches Element whlen wir als Pivot-Element?Bitte Klicke auf dieses Element.Nein, dieses Element ist bereits sotiert.Nein, dieses Element ist bereits sotiert.Nein, dieses Element ist bereits sotiert.Nein, dieses Element ist bereits sotiert.Nein, dieses Element ist bereits sotiert.Nein, dieses Element ist bereits sotiert.N, wir whlen ein anderes

  • Richtig, das ist unser nchstes Pivot-Element1.2.

  • 2.1.Richtig, das ist unser nchstes Pivot-ElementPlatziere nun den grnen Pfeil, indem du an den passenden Ort klickst

  • 2.1.Richtig, das ist unser nchstes Pivot-ElementGenau, nun platziere den blauen Pfeil, indem du an den passenden Ort klickst.

  • 2.1.Richtig, das ist unser nchstes Pivot-ElementGenau, der blaue Pfeil zeigt auf ein dunkleres Element, er muss also noch weiter gehen. Nein, der grne Pfeil zeigt bereits auf ein dunkleres Element, er muss wartenNein, das Pivot darf heute ausschlafenNein, dieses Feld macht gerade PauseKlicke nun auf dieses SymbolYepp, und nun?Klick auf das Objekt, welches als nchstes zu arbeiten hatWenn du einen Pfeil anklicken willst, musst du sehr genau auf seine Spitze klicken

  • 1.2.Richtig, das ist unser nchstes Pivot-ElementNein, dieses Feld macht gerade PauseJetzt kannst du wieder auf weiter klickenNein, das Pivot darf auch heute ausschlafenWer ist jetzt an der Reihe?

    Nein, der grne Pfeil zeigt bereits auf ein dunkleres Element, er muss wartenGenau, der blaue Pfeil ist immer noch an der Reihe

  • 2.1.Nein, das Pivot ist noch nicht an der ReiheNee, dieses Element wird zur Zeit nicht betrachtetWer ist den nun dran?

    Nein, der grne Pfeil zeigt bereits auf ein dunkleres Element, er muss wartenNein, dieses Element ist heller als unser Pivot, der blaue Pfeil muss sich etwas geduldenRichtig, das ist unser nchstes Pivot-Element

  • Genau. Wir mssen die zwei Elemente, die von den Pfeilen markiert sind, vertauschen.1.2.

  • 2.1.Nein, dieses Element ist schon in der richtigen ReihenfolgeNein, nein, das Pivot-Element darf sich noch etwas ausruhenUm weiter zu kommen, kannst du auf dieses Symbol klickenSo gefllts uns doch gleich besser.Aber wer ist jetzt dran?Richtig: Der grne Pfeil zeigt jetzt auf ein helleres Element, er darf also eins nach rechts rutschen.Nein, der blaue Pfeil ist noch nicht an der Reihe

  • 1.2.Um weiter zu kommen kannst du auf das Symbol klickenNein, nein, das Pivot-Element darf sich noch etwas ausruhenNein, dieses Element hat gerade FerienAn wem bleibt denn nun die Arbeit hngen?Nein, der grne Pfeil zeigt auf ein dunkleres Element, muss also wartenRichtig, der blaue Pfeil zeigt auf ein dunkleres Feld, er darf sich also auf Wanderung begeben

  • 2.1.Damits weiter geht, klicke hier:Jawoll! Die Pfeile haben sich gekreuzt; Nun ist unser Pivot-Element dranNein, dieses Element ist schon in der richtigen ReihenfolgeUnd nun?Klicke auf denjenigen, der zu arbeiten hatNein, der grne Pfeil zeigt auf ein dunkleres Element, muss also wartenNein, der blaue Pfeil zeigt auf ein helleres Objekt, er muss warten

  • 2.1.Genau, wenn es mit diesem Element vertauscht wird, kriegen wir die gewnschte ReihenfolgeN, wenn wir es mit diesem Element vertauschen, haben wir links von unserem Pivot-Element ein dunkleres Element, das gefllt uns nicht!Nein, dieses Element wird zur Zeit gar nicht betrachtetDamits weiter geht, klicke hier:Nein, es wird nicht mit sich selber vertauschtMit wem wird denn unser Pivot vertauscht?Du kannst unser Pivot-Element nicht mit einem Pfeil tauschen!

  • Gratuliere! Du hast soeben einen Teilschritt von Quicksort selbstndig ausgefhrt.1.2.

  • 1.2.3.Da unser Pivot nun am richtigen Platzt steht, kriegt es einen SmileyWas passiert jetzt?

    Klicke auf den entsprechenden TextSo ist es. Und da es sich um ein einzelnes Element handelt, ist es schon sortiert und bekommt einen Smiley.Leider nein. Wir sortieren immer zuerst den linken und dann den rechten TeilWeiter:a) Wir sortieren diesen Teil zuerstb) Wir sortieren diesen Teil zuerst

  • 1.2.3.Nun sind wir schon bald fertig: Wir mssen nur noch diesen kleinen Teil sortierenNur wie?Wie knnten wir es vergessen: The same procedure as last time!Whle das Pivot-Element aus, indem du drauf klickst:Nein, dieses Element ist bereits sortiert, deswegen trgt es ja so stolz einen Smiley mit sich rum.Nee, so sieht unser Pivot-Element aber nicht ausJa, du hast unser Pivot gefunden

  • 1.2.3.Ja, du hast unser Pivot gefundenPlatziere den grnen Pfeil am richtigen Platz

  • 1.2.3.Ja, du hast unser Pivot gefundenRichtig, und nun den blauen

  • 1.2.3.Ja, du hast unser Pivot gefundenRichtig.Wer muss sich nun bewegen?Nein, der grne Pfeil zeigt bereits auf ein dunkleres Element, er muss wartenNein, der blaue Pfeil zeigt schon auf ein helleres Element. Geduldig wartet er.Nee, das Pivot darf noch etwas liegen bleiben.

  • 1.2.3.Ja, du hast unser Pivot gefundenGut! Die zwei Elemente, die von den Pfeilen markiert werden, mssen die Pltze tauschen.

  • 1.2.3.Ja, du hast unser Pivot gefundenUnd nun?Wer darf sich als nchstes bewegen?Richtig, da der grne Pfeil nun auf ein helleres Element zeigt, geht er einen Schritt nach rechts.Nein, der blaue Pfeil ist noch nicht an der ReiheNein, dieses Element ist in der richtigen ReihenfolgeNein, das Pivot-Element darf sich erst bewegen, wenn sich die zwei Pfeile berkreuzt habenDamit gehts weiter

  • 1.2.3.Mit dem gehts weiterJa, du hast unser Pivot gefundenUnd nun?Wer ist an der Reihe?Nein, der grne Pfeil zeigt auf ein dunkleres Element und muss wartenGenau, der grne Pfeil wartet schon und der blaue zeigt auf ein dunkleres Element. Er rutscht also einen Platz nach linksNein, dieses Element ist in der richtigen ReihenfolgeNein, das Pivot-Element darf sich erst bewegen, wenn sich die zwei Pfeile berkreuzt haben

  • 1.2.3.Wen triffts in dieser Runde?Klicke den Auserwhlten an.Nein, der grne Pfeil hat bereits geschuftet. Er macht gerade PauseNein, der blaue Pfeil hat seine Arbeit bereits getan, er kann sich etwas ausruhenNein, dieses Element kann sich ausruhenSo ists: Die Pfeile haben sich berkreuzt, also muss nun unser Pivot aktiv werdenMit dem gehts weiterJein, eigentlich ist das die Antwort auf die nchste Frage

  • 1.2.3.Mit welchem Element tauscht unser Pivot seinen Platz?Unser Pivot tauscht seinen Platz sicher nicht mit einem grnen PfeilUnser Pivot hat keine Lust auf den Platz vom blauen PfeilNein, dieser Platz gefllt unserem Pivot gar nichtUnser Pivot will nicht am eigenen Platz bleiben

  • 1.2.3.Ja genau! Mit diesem tauscht er den Platz.

  • 1.2.3.4.Am neuen Platz angekommen fhlt sich unser Pivot-Element so wohl, dass es sich einen Smiley kauft.Hast du eine Vermutung, was jetzt geschehen wird?Wir haben es ja auch schon einige Male durchgespieltZuerst betrachten wir die linke Seite: Da es sich um ein einzelnes Element handelt, sind wir fertig.Wir verleihen ihm den Smiley.

  • Jetzt betrachten wir noch die rechte Seite und stellen fest, dass auch hier nur noch ein Element brig geblieben ist.Dieses Element ist also auch sortiert ; berreichen wir ihm auch einen Smiley.1.2.3.4.

  • Dieses Element war die rechte Seite von dieser Teilfolge.Diese Teilfolge ist demnach sortiert. Sie war aber nichts anderes als der rechte Teil der roten Farben

    1.2.3.4.

  • Also sind nun auch die roten Farben sortiert.Und was bedeutet das?

  • Also sind nun auch die roten Farben sortiertUnd was bedeutet das?Da die roten Farben die rechte Seite von unserer Farbenfolge waren, haben wir also tatschlich die ganze Folge sortiert.

  • JUHUI!Wir sind fertig!