Quick Sort: Informatik (sehr allgemein)

Поделиться
HTML-код
  • Опубликовано: 2 ноя 2024
  • !Achtung! Dieses Video erklärt den Vorgang von Quicksort nur sehr allgemein und vereinfacht. Für ein Beispiel mit Zeigern gibt's hier eine neue Version: • Quicksort in-place (de...
    Heute erkläre ich euch kurz, knapp und ohne Code wie Quicksort funktioniert. Inklusive kleinen Outtakes am Schluss.
    Lösung:
    deprecated.blee...
    Mehr unter www.bleeptrack.de
    Folg mir:
    Twitter: / bleeptrack
    Instagram: / bleeptrack
    Mastodon: chaos.social/@...

Комментарии • 79

  • @michaelschmit591
    @michaelschmit591 2 года назад +24

    Nach knapp 10 Jahren immer noch die beste RUclipsrin die Suchalgorithmen erklärt. DANKEEEEE

  • @markusmitph8987
    @markusmitph8987 3 года назад +2

    Vielen Dank für das Video! Du hast es echt gut erklärt! Die letzte halbe Minute ist aber trotzdem das Highlight! Gesundheit!

  • @Billy07091996
    @Billy07091996 3 года назад +2

    Nach so vielen Videos dank deinem endlich kapiert :D Danke!

  • @LPmitRobin
    @LPmitRobin 8 лет назад +2

    Danke für diese kurze und doch ausführliche Erklärung! Genau so etwas habe ich gesucht! :) Wenn ich mich mit einem solchen Verfahren beschäftige, finde ich es immer deutlich einfacher, sich zuerst eine allgemeine Erklärung anzuschauen und sich anschließend selber an dem Algorithmus zu versuchen, anstatt sich direkt einen fremden Algorithmus anzuschauen. Letzterer ist für mich nämlich aufgrund seiner Abstraktheit in der Regel deutlich schwerer zu merken.

  • @OnkelDevil
    @OnkelDevil Год назад

    Gut erklärt. Nebenbei: Du hast eine schöne angenehmen Stimme!

  • @Cryptorax
    @Cryptorax 5 лет назад +24

    Habe mich zunächst damit schwer getan bei Quicksort, aber auch dieses Mal hast du mir wieder großartig geholfen!
    #Ehrenfrau

    • @Manu-xj4xy
      @Manu-xj4xy 5 лет назад

      Yeah ich hab's auch verstanden :D

  • @user-tn6sj6je8n
    @user-tn6sj6je8n 7 лет назад

    Danke! Mit dieser Visualisierung hab ichs einfach hingekriegt das ganze selber zu basteln.

  • @fschutt247
    @fschutt247 8 лет назад

    Vielen Dank. Die Erklärungen mit "Pivot verschieben" hatte ich nicht ganz verstanden aber das Video ist sehr gut verständlich.

  • @xxMaro92xx
    @xxMaro92xx 8 лет назад +5

    gutes ende! :D ne danke, hat mir grade sehr geholfen, dein video :)

  • @Runderwunderknopf
    @Runderwunderknopf 9 лет назад +3

    Ich bedanke mich herzlichst für dieses gute Video! Einen Interessanten Channel hast du da, ich werde wohl mal öfter vorbeischauen ^^

  • @senthiara1805
    @senthiara1805 10 лет назад +20

    das ende^^ ansonsten wirklich gut erklärt :)

    • @SuperKarlFriedrich
      @SuperKarlFriedrich 5 лет назад

      "rückwärts hochreichen - also was vor in richtung kleiner weitergereicht wurde kommt nach links vom element auf der nächst höheren ebene, andere seite analog"
      ist vielleicht gut das ich nicht solche videos mache ^^
      aber das ist im prinzip der satz der fehlte

  • @GaptheButthead
    @GaptheButthead 3 года назад

    LEGENDE!!!!!!!!!!

  • @AkshansYoutubeAccount
    @AkshansYoutubeAccount 8 лет назад +13

    Ohne Spass das Ende war so witzig D:
    Morgen Programmieren und dann ein auf 9xKlug machen und das erklären. Mal sehen ob ichs hinbekomme ^ ^

  • @mihdy42
    @mihdy42 9 лет назад +2

    Danke, ist für den Einstieg eine super Erklärung. Jetzt lässt sich auch der Quellcode besser verstehen :)

  • @287950003
    @287950003 6 лет назад +4

    Sehr gute Erklärung in Verbindung mit dem selbstgemalten Schaubild.

  • @jankoeggert1828
    @jankoeggert1828 6 лет назад +6

    habe das Verfahren in 1:47 Min. verstanden :-D heißt: gutes Video. Danke!

    • @tonikaiser2823
      @tonikaiser2823 4 года назад

      im wesentlichen eh eine triviale Sache, man muss es halt mal selbst üben um es in Erinnerung zu behalten.
      die Erklärung ist super, doch ist es da oft so dass man es beim zuhören versteht aber noch nciht anwenden kann.

  • @Ayk3n
    @Ayk3n 10 лет назад +4

    sehr gute un einfache erklärung! danke! :)

  • @xDarcade
    @xDarcade 5 лет назад

    hat mir weiter geholfen danke

  • @falex9070
    @falex9070 5 лет назад +16

    Sehr sympatische Stimme :)

  • @rainerblessing923
    @rainerblessing923 8 лет назад +2

    Ich konnte die Erklaerung des Algorithmus gut in eine Java Implementation umsetzen. Verwendet habe ich TDD und war erst ueberrascht, warum die Implementation ueberhaupt funktioniert hat :)

  • @WyldWorld1997
    @WyldWorld1997 7 лет назад

    sehr gut erklärt:)tausend Dank

  • @Wulf1985
    @Wulf1985 8 лет назад

    Sehr gut erklärt. Vielen Dank!

  • @Beatboxerskills
    @Beatboxerskills 4 года назад

    Wenn man jetzt als Pivot-Element das letzte Element nimmt, würde man dann auch die liste immer von links nach rechts durchgehen und die zahlen vor oder hinter das pivot element sortieren oder würde man hinten anfangen? LG

    • @bleeptrack
      @bleeptrack  4 года назад +1

      Die Richtung ist für die Laufzeit egal, du könntest beides machen. Wenn du dich für eine genauere Umsetzung interessierst, schau dir vllt mal mein zweites Video zu Quicksort an :) ruclips.net/video/htRWn-NMZnc/видео.html

    • @Beatboxerskills
      @Beatboxerskills 4 года назад

      @@bleeptrack Cool danke für die schnelle Antwort. Ja wir haben in der Uni das zweite Verfahren kennengelernt aber finde das erste entspannter :D

  • @blutkraehe_official
    @blutkraehe_official 5 лет назад

    hallo, mir kommt die wahl wo man das nächste pivo element hinschreibt willkürrlich vor und schon "quasi sortiert" ?

    • @bleeptrack
      @bleeptrack  5 лет назад

      ruclips.net/video/htRWn-NMZnc/видео.html

  • @martinssortingchannel8008
    @martinssortingchannel8008 Год назад

    Die große Mehrheit hat sich ja darauf geeinigt, immer das letzte Element für Pivot zu nehmen. Wenn das Array zufällig gemischt ist, dann spielt es natürlich keine Rolle, welches Element man nimmt, weil es ja so oder so nur vom Zufall abhängig ist, ob dieses Element als Pivot für die aktuelle Teilung das Beste oder Schlechteste Element war. DOCH VORSICHT!!!! Wenn man es RICHTIG macht, dann MUSS man grundsätzlich IMMER das mittlere Element als Pivot verwenden. Es gibt nämlich zwei Fälle, in denen es ansonsten zum Absturz von Quicksort kommen kann, weil der Puffer-Cache bei mehr als 2748 Rekursionen überläuft. Das ist bei der Verwendung des ersten und letzten Elements für Pivot der Fall, wenn der Best- oder Worst-Case vorliegen, weil hier dann die Anzahl der gleichzeitig aktiven Rekursionen, mit der Anzahl der zu sortierenden Elemente identisch ist. Nimmt man anstelle dessen immer das mittlere Element für Pivot, dann sind selbst bei einer Million zu sortierenden Elementen, niemals mehr als 20 Rekursionen gleichzeitig aktiv.

  • @eg.3949
    @eg.3949 4 года назад

    Wenn es keine weiteren Angaben gibt, kann man dann auch das Pivot-Element frei wählen ?
    Bsp: 1 5 7 9 Pivot-Element: 6
    oder würde ich die 6, dann Trennwert heißen? So hatten wir es nämlich im Unterricht und das hat mich jetzt verwirrt

    • @bleeptrack
      @bleeptrack  4 года назад

      "Trennwert" klingt für mich einfach nach einer anderen Bezeichnung für das Pivotelement :) Wenn die Aufgabe keine Angabe zur Wahl des Trennelememts gibt, würde ich mich in deinem Fall an die Variante aus eurem Unterricht halten 👍

  • @VolrazLP
    @VolrazLP 7 лет назад +1

    Mega gut Erklärt. Danke. 👌

  • @tobiasschafer8027
    @tobiasschafer8027 9 лет назад

    Das Video ist 1a. Weiter so!!!

  • @maxlpower4985
    @maxlpower4985 10 лет назад +5

    Diese Art der Erklärung findet man leider zu oft auf YT. Wenn es näher an der Programmierpraxis seien soll, dann müsste man zuerst erläutern, wie man sein erstes Pivot wählt, z.B. per MedianOfThree (machen viele nicht, hast du aber erwähnt) Ansonsten müsste man eben noch zwei Pointer einführen, d.h. einen linken Pointer der auf der Zahl steht, die z.B. echt größer als das Pivot ist und eben von rechts ein Pointer, der auf ein Element zeigt, das echt kleiner ist.
    Und dann vergleiche ich eben und tausche bei Bedarf bzw. wenn sich die Pointer kreuzen, also ein Überlauf stattfindet, dann swappe ich betreffendes Element mit dem Pivot und dann habe ich erst eine sortierte Teilliste nach dem Divide&Conquer-Prinzip.

  • @Pingynator
    @Pingynator 9 лет назад

    Welche Datenstruktur wird für den Quicksort verwendet?
    Ein Binärbaum? oder gleich ein Array? :)

    • @bleeptrack
      @bleeptrack  9 лет назад +3

      Array oder eine Liste :)

  • @CommanderStone
    @CommanderStone 9 лет назад

    Gut erklärt! :-)

  • @MissSnowwhite2
    @MissSnowwhite2 9 лет назад +1

    Danke, super erklärt!! :)

  • @nilskublun9809
    @nilskublun9809 5 лет назад

    Der Hammer

  • @rexgamer2341
    @rexgamer2341 7 лет назад

    Bei diesem Vorgang arbeitet der Quicksort doch out-of-place, oder irre ich mich?

    • @bleeptrack
      @bleeptrack  7 лет назад

      +Rex Gamer richtig :) für eine in-place Variante gibt es ein extra Video.

    • @rexgamer2341
      @rexgamer2341 7 лет назад

      Ja danke :D Gutes Video und toll erklärt!

  • @narutobekommtsharingan6728
    @narutobekommtsharingan6728 2 года назад +1

    万元户 更。 thank you🙏🏼

  • @MrAngryNeard
    @MrAngryNeard 4 года назад +1

    Frohes Neujahr, auch wen es 6 -7 Jahre zu spät kommt.

  • @ssami8324
    @ssami8324 9 лет назад

    gut erklärt :) Danke !!

  • @jakobbennemann1081
    @jakobbennemann1081 8 лет назад

    welche Software benutzt du, um auf dem Screen zu zeichnen?

    • @bleeptrack
      @bleeptrack  8 лет назад

      Ich experimentiere gerne etwas. Meist zeichne ich mit Camtasia auf.

    • @bleeptrack
      @bleeptrack  8 лет назад

      Ah, falsch gelesen. Ich benutze aktuell Krita zum Zeichnen. Bei dem Video habe ich noch Sketchbook Pro verwendet.

    • @jakobbennemann1081
      @jakobbennemann1081 8 лет назад

      top, danke!! :)

  • @vusalaliyev4117
    @vusalaliyev4117 4 года назад

    perfekt

  • @bleeptrack
    @bleeptrack  10 лет назад

    ***** Ich setze die Zahlen gleich "richtig", also mit etwas Abstand, da mir das viel Schreibarbeit erspart. Denn dauernd etwas wegzuradieren ist nicht gerade schön anzusehen. Das ändert aber nichts an der Sortierweise und macht den Algorithmus auch nicht unlogisch ;)

  • @Cotyora1905
    @Cotyora1905 9 лет назад

    Es wäre schön, wenn man alle einzelnen Schritte erklärt bekommt, wie es bspw. dazu kommt, wie man die größte Zahl in einer Teilliste erhält bzw. rausfindet. DIe eigentlich wichtigen Schritte werden meiner Meinung nach übersprungen, was ich sehr schade finde!

    • @bleeptrack
      @bleeptrack  9 лет назад

      Hi, "wie man die größte Zahl in einer Teilliste erhält" - meist du damit, wie das Pivotelement gewählt wird? Oder meinst du wie die Sortierung der Teillisten zustande kommt?
      Beides ist sehr abhängig von der Implementierung und auch von der Programmiersprache. Da meine Erklärungen möglichst sprachenunanhängig sein sollen, gehe ich auf die Teillistenspaltung nicht genauer ein.

    • @Cotyora1905
      @Cotyora1905 9 лет назад

      Ich wollte mit meiner Frage auf die Sortierung der Teillisten hinausgehen, wie ich quasi ermitteln kann. Also angefangen mit der Wahl des Pivot-Elements und dann die einzelnen Schritte wie ich die Elemente nach der Größe ordne.

  • @iziti
    @iziti 10 лет назад +33

    du erklärst leider nicht wieso die sortierten zahlen (rot) in genau in diesen positionen gesetzt werden... z.B die 1 und die 9 setzt du ganz links und rechts... und dann die 4 und 6 zufällig auf den richtigen positionen... wenn du eine 3 bekommen hättest, hättest du sie ja auch in die mitte gelegt und nicht da wo die 4 steht... daher macht deine sortierung keinen sinn finde ich...

    • @Phoenix-gi3gu
      @Phoenix-gi3gu 7 лет назад +2

      Ist zwar sehr Alt die Frage, aber es wird insertet. Ist es kleiner als das Pivotelement links insertet und größer als das rechts. Man kann es auch inplace machen (habe ich selbst schon so programmiert), aber wie so oft ist dass dann eine Frage der Implementierung. Da gibt es viele verschiedene Möglichkeiten und das gehört nicht mehr zum "Pseudocode" bzw. der eigentlichen Idee dahinter.

    • @fehlervrei
      @fehlervrei 7 лет назад +9

      Das ist doch nur so veranschaulicht, um Platz zu sparen. Man hätte doch noch immer links oder rechts neben der Zahl etwas hinschreiben können. Bisschen Logik und dann erübrigt sich so eine Frage

  • @Xeridar
    @Xeridar 9 лет назад

    Ich würde vorschlagen das mal mit üblicher "in situ" Implementierung zu machen. Denn dann kommen in den Zwischenschritten ganz andere Teilfolgen raus als bei diesem "Zahlen lustig per Hand untereinanderschreiben Verfahren", das die - in der Praxis sehr wichtige - effiziente Implementierung völlig vernachlässigt. Die Grundidee von Quicksort vermittelt das Video zwar, aber das ist eben nicht alles...

    • @bleeptrack
      @bleeptrack  9 лет назад

      +Xeridar Mehr soll das Video auch nicht vermitteln. Das Video ist unabhängig von einer Implementierung, die in unterschiedlichen Sprachen sehr unterschiedlich aussieht und ablaufen kann. Wer eine effiziente Lösung für die Programmiersprache seiner Wahl möchte, sollte auch explizit danach suchen ;)

    • @Xeridar
      @Xeridar 9 лет назад

      +Bleeptrack Das Konzept, wie sich Quicksort "in situ" implementieren lässt, ist auch unabhängig von einer konkreten Programmiersprache - diese gibt nur die Syntax vor. Leider verschweigt das Video, dass es da überhaupt noch etwas zu beachten gibt - daher mein Hinweis als Kommentar.

    • @bleeptrack
      @bleeptrack  9 лет назад

      Xeridar Ja, ich verstehe deinen Einwand. Ich habe nur auch beispielsweise funktionelle Sprachen wie Haskell im Hinterkopf, die an meiner Uni auch jeder mal zu Gesicht bekommt. Die setzen ja überhaupt nicht auf die sonst recht gängige "Pointer von rechts und links"-Methode. Deswegen versuche ich das so allgemein wie möglich zu halten.

    • @bleeptrack
      @bleeptrack  9 лет назад

      +Xeridar Wenn ich jetzt allerdings länger darüber nachdenke... Ein Programmieranfänger der nach so einem Video sucht, wird eher nicht gerade mit einer funktionalen Sprache wie Haskell anfangen. Da sollte ich vllt. doch mal ein Video mit der in-place Variante machen.

    • @Xeridar
      @Xeridar 9 лет назад

      +Bleeptrack Haskell, Prolog und Co würde ich auch außen vor lassen. Ich fand den Hinweis aber sinnvoll, da sich einige Studenten bei uns aktuell hier auf dieses Video berufen und ich ihnen jetzt erklären muss, warum der hier präsentierte "Lösungsweg" bei uns NICHT volle Punkte bringt - es fehlt eben etwas Wichtiges...

  • @florianhaberlandt9464
    @florianhaberlandt9464 5 лет назад

    Vllt wäre die Information gut gewesen was man beim Programmieren mit dem "pivo" element macht

    • @bleeptrack
      @bleeptrack  5 лет назад +1

      Im Video erkläre ich nur das allgemeine Prinzip. Die Handhabung des Pivotelements ("Pivot" aus dem Französischen, steht für Angelpunkt/Ankerpunkt) hängt sehr von der Implementierung ab. Darum habe ich später ein Video nachgeschoben, das den Vorgang mit Pointern betrachtet.

    • @florianhaberlandt9464
      @florianhaberlandt9464 5 лет назад

      @@bleeptrack Perfekt danke und auch nochmal für die Definition von Pivot

  • @bleeptrack
    @bleeptrack  10 лет назад

  • @MrSchlechtes
    @MrSchlechtes 3 года назад

    haha I like that

  • @tttkkkiii
    @tttkkkiii 9 лет назад +5

    ACHTUNG: die Erklärung aus dem Video ist gut für die Theorie, in Klausuren und Prüfungen wollen die Prüfer aber auf Papier die genaue Vorgehensweise des "Computers" beim Quicksort Alg. sehen. Das heißt die "Lösung" aus dem Video wäre in einer Prüfung leider Falsch.
    da so der Computer nicht vorgeht.

    • @bleeptrack
      @bleeptrack  9 лет назад

      Das würde ich so nicht verallgemeinern ;) Es kommt einfach stark darauf an wie viele Schritte abgebildet werden sollen und wie das Pivotelement gewählt werden soll.

    • @tttkkkiii
      @tttkkkiii 9 лет назад +4

      Es geht nicht um einen C Code.
      Es war in einer Prüfung die Frage nach dem Quick Sort, gegeben war eine Zahlenreihe und man musste die Zahlenreihe wie bei einem Quick Sort Sortieren (kein Code sondern genau wie bei dem Video)
      nun die Lösung aus dem Video war hier Falsch, die Begründung des Prüfers: "Der Computer geht nicht so vor, du hast so Schritte übersprungen"
      d.h. man sollte den Quick Sort Schritt für Schritt anwenden wie es der Computer tun Würde.

  • @MrPsychologie
    @MrPsychologie 4 года назад +1

    Mein Tipp sag wenn du geniest hast "elhamdu lillaah".

  • @finnschnetzke213
    @finnschnetzke213 5 лет назад

    scheiß Beispiel!!!!!!!