Quicksort erklärte den Kindern


16

Letztes Jahr las ich einen fantastischen Artikel über „Quantenmechanik für den Kindergarten“ . Es war kein leichtes Papier.

Nun frage ich mich, wie ich Quicksort mit möglichst einfachen Worten erklären kann. Wie kann ich beweisen (oder zumindest per Hand), dass die durchschnittliche Komplexität ist und was die besten und die schlechtesten Fälle für einen Kindergartenunterricht sind? Oder zumindest in der Grundschule?Ö(nLogn)


9
Sie wollen die Komplexität von Quicksort ... einem Haufen Dreijähriger beweisen ...? Viel Glück.

2
Versuchen Sie, ihre Sprache zu verwenden, das Problem ist, dass es sehr begrenzt ist und biologisch sind sie nicht bereit für diese Komplexität. Die folgenden Schritte wie in einem Algorithmus sind erst im Alter von sechs oder sieben Jahren vollständig entwickelt. Sie stehen vor einer biologischen Herausforderung.

4
Ich würde es eigentlich nicht für den Kindergarten vorschlagen, aber das Durchsuchen von YouTube nach Quicksort (und anderen Sortieralgorithmen) bietet viele gute Darstellungen. Ich persönlich bevorzuge den hugarischen Volkstanz. Siehe youtube.com/watch?v=ywWBy6J5gz8 .

2
Die Zeitung, über die Sie sprechen, hat einen eingängigen Titel, aber einen sehr komplexen Inhalt wie Hilbert Space Model. Was suchen Sie also wirklich?

2
Ich würde es aufgeben, QuickSort vollständig zu erklären, und stattdessen versuchen, den Kindern ein Verständnis für "Teilen und Erobern" zu vermitteln. Selbst wenn sie nicht alt genug sind, um eine vollständige Rekursion zu ermöglichen, wäre die Idee, ein großes Problem in kleinere Probleme zu unterteilen, wirklich wertvoll. Persönlich würde ich jeden Tag ein solides Grundverständnis für das Teilen und Erobern über eine unvollständige Vorstellung komplexer Algorithmen haben.
Vincent Gable

Antworten:


14

Im Kern ist Quicksort:

  1. Nimm den ersten Gegenstand.
  2. Verschiebe alles, was kleiner ist als das erste Objekt, nach links, alles, was größer ist, nach rechts (in aufsteigender Reihenfolge).
  3. Recurse auf jeder Seite.

Ich denke, jeder 4-Jährige auf dem Planeten könnte 1 und 2 machen. Die Rekursion könnte ein bisschen mehr Erklärung brauchen, sollte aber nicht so schwer für sie sein.

  1. Wiederholen Sie dies auf der linken Seite und ignorieren Sie die rechte Seite (aber denken Sie daran, wo sich die Mitte befand).
  2. Wiederholen Sie mit den linken Seiten, bis Sie zu nichts kommen. Kehren Sie jetzt zu der letzten Seite zurück, die Sie ignoriert haben, und wiederholen Sie den Vorgang dort.
  3. Sobald die rechte und die linke Seite ausgehen, sind Sie fertig.

In Bezug auf die Komplexität sollte der Worst-Case relativ einfach sein. Betrachten Sie einfach ein bereits sortiertes Array:

1 2 3 4
  2 3 4
    3 4
      4

Ziemlich leicht zu sehen (und zu beweisen), dass es .12n2

Ich kenne den Beweis für den Durchschnittsfall nicht, daher kann ich keinen wirklichen Vorschlag dafür machen. Man könnte sagen, dass in einem unsortierten Array mit der Länge die Wahrscheinlichkeit, den kleinsten oder größten Artikel auszuwählen, 2 beträgtl , also ...?2n


Vielleicht ist (d & c) Rekursion am besten und am natürlichsten mit der inhärenten Parallelität zu erklären.
Raphael

2
Ich würde zustimmen. Mein Instinkt war es, eine Metapher zu benutzen, um die beiden Stapel Ihren Freunden zur Bearbeitung zu geben.
Christian Mann

3
Ich behaupte, dass Vierjährige (mit möglichen Ausnahmen) die Rekursion grundsätzlich nicht erfassen können, egal wie sehr Sie es versuchen. Das Gehirn ist einfach nicht reif genug. Es gibt genau definierte Phasen in der Entwicklung des Gehirns, zum Beispiel den Punkt, an dem Kinder sich ihrer selbst bewusst werden, sich der zukünftigen Folgen aktueller Handlungen bewusst werden und Sarkasmus zuerst verstehen, der einem streng kontrollierten Zeitplan folgt, der nicht willentlich und nachbestellt werden kann ist bei Kindern sehr konserviert. Ich glaube, dass das Verständnis von Rekursion in dieselbe Kategorie fällt.
Konrad Rudolph

16

Quicksort ist eigentlich ziemlich einfach zu verstehen, wenn sie das grundlegende Zählen und Teilen durch 2 verstehen. Bilden Sie ein Bündel von X Karteikarten, nummerieren Sie sie 1 - X und mischen Sie es. Dann ist hier die Erklärung:

OK, wir haben hier dieses Kartenspiel (sagen wir 20). Wir wollen sie in eine Reihenfolge bringen, also ist 1 zuerst, dann 2, dann 3 und so weiter. Hier ist eine sehr schnelle Möglichkeit, dies zu tun.

Lassen Sie uns zuerst durch dieses Deck gehen und zwei Stapel daraus machen. Die Hälfte von 20 ist 10, also geht alles, was größer als 10 ist, in diesen Stapel auf der rechten Seite, und alles, was kleiner ist, geht in diesen Stapel auf der linken Seite. (Stellen Sie sicher, dass Sie demonstrieren, während Sie gehen.)

Jetzt machen wir dasselbe mit den kleineren Pfählen. Was ist die Hälfte von 10? (Jemand sagt "fünf!") Das stimmt! Alles, was größer als 5 ist, geht rechts in diesen Stapel, und alles, was kleiner ist, geht links in diesen Stapel.

Und hier haben wir die Gruppe, die größer als 10 ist. Also ist die Hälfte von 10 5 und was ist 10 plus 5? (Jemand sagt "fünfzehn!") Das stimmt! Alles, was größer als 15 ist, geht rechts in diesen Stapel, und alles, was kleiner als 15 ist, geht links in diesen Stapel.

Und jetzt werden die Stapel so klein, dass Sie sie leicht ansehen und ordnen können. Schauen Sie, hier haben wir 2, 4, 5, 3, 1. Also vertauschen wir sie einfach so, und Sie können sehen 1, 2, 3, 4, 5. Machen wir also dasselbe mit den anderen Pfählen, und dann ordnen wir die Pfähle einfach und schauen! Sie sind in der Reihenfolge von 1 bis 20!

Herzliche Glückwünsche. Sie haben gerade ein paar Kindern die Grundprinzipien eines adaptiven Quicksort-Algorithmus beigebracht! Je nach geistiger Reife kann man ein bisschen tiefer gehen, aber weit darüber hinaus erfordert es ein gewisses Verständnis der formalen Logik.

Es ist schwieriger, seine Komplexität zu beweisen. Dies ist eines der Dinge, die formale Logik erfordern, und sie müssen zunächst die Grundprinzipien der Big-O-Notation verstehen. Vielleicht möchten Sie diesen Teil zuerst abwarten.


Ich denke nicht, dass Ihr Beispiel nicht gut ist, weil Sie im Wesentlichen nach Schlüsseln sortieren, nicht nach Werten, und Sie können nur wissen, was sich auf Position 15 befindet, indem Sie bereits sortiert haben.
Thorbjørn Ravn Andersen

@ Thorbjørn: Wer hat etwas über Schlüssel / Wert-Paare gesagt? Dies ist eine einfache Ganzzahlsorte, um das Grundkonzept zu erläutern.
Mason Wheeler

Über den von Ihnen beschriebenen Algorithmus nachzudenken, ist keine Quicksortierung, da Sie kein Pivot-Element verwenden.
Thorbjørn Ravn Andersen

1
@ ThorbjørnRavnAndersen: Natürlich tut er das; Es ist nur so, dass er weiß, welche Elemente vorhanden sind, damit er den Median wählen kann.
Raphael

@Raphael und ihre Verbreitung. Die Karten können jeden Wert und jede Farbe haben und haben nur einen Aufkleber mit einer Nummer zwischen 1 und 20. Daher mein Hinweis auf den Schlüssel / Index und nicht auf den Wert.
Thorbjørn Ravn Andersen

2

Wie wäre es damit?

Informatik Unplugged - Sortieralgorithmen

Es deckt nicht alle Ihre Fragen ab, aber es ist ein guter Anfang.

Weitere Ressourcen zu diesem Thema sind hier verlinkt .

Sie stellten auch ein Video zur Verfügung, in dem die Sortieralgorithmen (einschließlich Quicksort) erläutert werden . Dieses Video hilft wirklich dabei, den Unterschied zwischen den verschiedenen Sortieralgorithmen für kleine Kinder zu verstehen.


großartig! Ganz einfach zu verstehen.
Mayur Patil

1

Sehen Sie sich die grafische Schönheit dieser kleinen Demo an .

schnelle Sorte.


1
Ich denke, das könnte für Kinder zu abstrakt sein.
Raphael

3
Um mich nicht in Verlegenheit zu bringen, aber ich verstand diese Grafik nicht, bis ich schließlich in der Klasse kurz erklärt wurde.
Christian Mann

Habe eine +1, weil mir dies zuerst einfiel, als ich die Frage las, aber dann bin ich ein visueller Lerner.
Joshua Drake

3
Dies ist wirklich ein falscher Weg, um zu erklären, wie Quicksort funktioniert . Wenn Sie QuickSort bereits kennen, können Sie bestätigen, dass es sich bei dieser Animation um QuickSort handelt. Wenn Sie QuickSort nicht kennen, sagt es nichts, außer dass QuickSort ein ziemlich schneller Sortieralgorithmus ist, der etwas Magie verwendet. Abhängig davon, wer das Publikum ist, können Sie das Publikum möglicherweise durch das Anzeigen dieser Animation zum Erlernen von Quicksort motivieren, aber es erklärt nichts, was für die Funktionsweise wichtig ist.
Tsuyoshi Ito

Die Animation ist ziemlich schön, aber für Anfänger ist es bisher verständlich, auch für einen Studenten auf Anhieb.
Jonaprieto
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.