Zum Inhalt springen
L

Das Video kommt von YouTube: erst beim Abspielen verbindet sich die Seite mit YouTube (Google).

Bubble Sort Algorithmus [mit Animation, Deutsch]

HappyCoders8:07 15.718 Aufrufe veröffentlicht Auf YouTube

Das Wichtigste aus dem Video

Tipp auf eine Zeit – das Video springt genau dorthin.

Transkriptautomatisch erstellt · 52 Zeilen
Herunterladen
  1. In diesem Video zeige ich euch wie Bubble Sort funktioniert und wie man die Zeitkomplexität von Bubble Sort bestimmt.
  2. Wir wollen diese sieben Zahlen mit Bubble Sort sortieren. Wir vergleichen nun, von links beginnend, jeweils zwei Elemente miteinander und tauschen
  3. diese, wenn sie nicht in der richtigen Reihenfolge stehen. Wir beginnen mit der 6 und der 2. Diese stehen nicht in der richtigen Reihenfolge, also tauschen
  4. wir sie. Die 6 und die 4 stehen ebenfalls nicht in der richtigen Reihenfolge und wir tauschen
  5. auch diese. Die 6 und 9 stehen in der richtigen Reihenfolge zueinander.
  6. Die 9 und die 3 wieder nicht; wir tauschen sie. Und das gleiche machen wir für die die 9 und die 1 … und die 9 und die 7
  7. Das größte Element wurde nun bis ganz nach rechts geschoben, und wir teilen das Array links von diesem Element gedanklich in einen linken, nicht sortierten, und einen rechten,
  8. sortierten Teil. Wir starten erneut am Anfang des Arrays und vergleichen die 2 mit der 4. Diese liegen
  9. in korrekter Reihenfolge und müssen nicht vertauscht werden. Das gleiche gilt für die 4 und die 6.
  10. Die 6 und die 3 stehen in umgekehrter Reihenfolge zueinander und müssen vertauscht werden. Das gleiche machen wir für die 6 und die 1.
  11. Die 6 und die 7 stehen in korrekter Reihenfolge zueinander und müssen nicht getauscht werden. Damit sind wir am Ende des unsortierten Bereichs angekommen und schieben die Trennlinie eine
  12. Position nach links. Wir starten wieder am Anfang.
  13. Die 2 und die 4 liegen nach wie vor richtig zueinander. Die 4 und die 3 müssen wir tauschen; ebenso die 4 und die 1.
  14. Die 4 und die 6 liegen bereits in richtiger Reihenfolge. Wir sind wieder am Ende des unsortierten Bereichs angekommen und schieben die Trennlinie weiter
  15. nach links. Wir beginnen erneut am Anfang.
  16. 2 und 3 stehen in korrekter Reihenfolge; 3 und 1 müssen vertauscht werden; und 3 und 4 stehen in korrekter Reihenfolge.
  17. Wir schieben die Trennlinie weiter nach links … und beginnen erneut am Anfang. 2 und 1 müssen wir tauschen; 2 und 3 stehen korrekt zueinander.
  18. Wir schieben die Trennlinie ein letztes Mal um eine Position nach links. Die letzten zwei Zahlen des unsortierten Bereichs, die 1 und die 2, stehen bereits in der richtigen
  19. Reihenfolge zueinander. Und damit sind alle Zahlen sortiert und der Bubble-Sort-Algorithmus beendet.
  20. Wenn wir die Zahlen als Balken darstellen und den Sortiervorgang in Zeitraffer abspielen, dann steigen die Elemente nach und nach zu ihren Zielpositionen auf − ähnlich wie
  21. Luftblasen − englisch „bubbles“. Daher der Name „Bubble Sort“. Kommen wir zur Zeitkomplexität von Bubble Sort.
  22. Die Anzahl der zu sortierenden Elemente bezeichnen wir mit „n“. In unserem Beispiel ist n: 7.
  23. Beginnen wir mit dem Best Case. Im Best Case liegen die Elemente bereits in sortierter Reihenfolge vor. Der Bubblesort-Algorithmus wird also beim ersten Durchlauf sechs Vergleiche
  24. durchführen, aber keine Elemente vertauschen. Daraufhin wird er sich sofort beenden.
  25. Die Anzahl der Vergleiche ist die Anzahl der Elemente minus 1, also n−1. Konstanten wie die −1 können wir bei der Notation der Zeitkomplexität vernachlässigen.
  26. Die Best-Case-Zeitkomplexität von Bubble Sort lautet also: O(n). Die Komplexitätsklasse O(n) bezeichnen wir als „linear“, da der Aufwand linear mit
  27. der Anzahl der Elemente wächst. Wo es einen Best Case gibt, da gibt es natürlich auch einen Worst Case.
  28. Wenn die Elemente zu Beginn komplett absteigend vorsortiert sind, dann haben wir in der ersten Iteration sechs Vergleiche und sechs Vertauschungen.
  29. Am Ende der ersten Iteration ist die letzte Zahl an der richtigen Position. In der zweiten Iteration haben wir fünf Vergleiche und Vertauschungen, und am Ende sind die zwei
  30. letzten Zahlen an der richtigen Stelle. In der dritten Iteration haben wir vier Vergleiche und Vertauschungen.
  31. In der vierten Iteration sind es drei … in der fünften Iteration zwei … und in der sechsten Iteration noch einen Vergleich und eine Vertauschung.
  32. Insgesamt kommen wir auf 21 Vergleiche und Vertauschungen. Das kann man auch wie folgt ausrechnen: sieben Elemente … mal sechs Iterationen … geteilt
  33. durch zwei, da pro Iteration im Durchschnitt die Hälfte der Elemente verglichen und vertauscht wird.
  34. Sieben mal sechs ist 42 … geteilt durch zwei ist 21. Wenn wir „sieben“ wieder durch „n“ ersetzen, ergibt das: n x (n − 1) x ½.
  35. Ausmultipliziert ergibt das: ½ (n² − n). Für die Notierung der Zeitkomplexität ist nur die höchste Potenz von n relevant, also
  36. n². Die Worst-Case-Zeitkomplexität von Bubble Sort ist also: O(n²).
  37. O(n²) − oder auch „quadratischer Aufwand“ − bedeutet: Die benötigte Zeit wächst im Quadrat mit der Anzahl der zu sortierenden Elemente.
  38. Ein Beispiel: Auf meinem Laptop benötigt Bubblesort für 100.000 absteigend vorsortierte Elemente etwa
  39. 5,5 Sekunden. Für eine Million Elemente (also zehnmal so viele) braucht es nicht etwa 55 Sekunden,
  40. sondern etwa 550 Sekunden − also hundert Mal so lang. Für zehn Millionen Elemente würde es 55.000 Sekunden benötigen.
  41. Und für 100 Millionen Elemente: 5,5 Millionen Sekunden. Das sind ziemlich genau zwei Monate. Quicksort braucht dafür gerade mal zehn Sekunden.
  42. Rechts oben in der Ecke und auch in der Videobeschreibung findet ihr einen Link zu meinem Quicksort-Video. Die durchschnittliche, also die Average-Case-Zeitkomplexität lässt sich leider nicht auf ganz so anschauliche
  43. Art und Weise bestimmen. Ohne dies mathematisch zu beweisen kann man grob sagen, dass man im durchschnittlichen
  44. Fall etwa halb so viele Tauschoperationen hat wie im Worst Case, da sich die Hälfte der Elemente im Vergleich zum Nachbarelement an der richtigen Position befindet.
  45. Die Anzahl der Tauschoperationen ist also: ¼ (n² – n). Die Anzahl der Vergleichsoperationen lautet wie folgt: …
  46. Das habe ich von Wikipedia kopiert – und solange ihr nicht Mathe studiert oder euch auf theoretische Informatik spezialisiert, müsst ihr das nicht unbedingt verstehen.
  47. Was ihr allerdings erkennen solltet, ist, dass in beiden Termen die höchste Potenz von n n² ist.
  48. Und damit gilt: Auch die Average-Case-Zeitkomplexität von Bubble Sort ist: O(n²). Ich hoffe euch hat dieses Video über Bubblesort gefallen. Auf meiner Webseite HappyCoders.eu
  49. findet ihr die Erklärung noch einmal zum Nachlesen. Einen Link findet ihr in der Videobeschreibung. In dem Artikel findet ihr auch den Quellcode von Bubble Sort und die Beschreibung zweier
  50. Ansätze, um Bubblesort zu parallelisieren. In der Videobeschreibung findet ihr auch Links zu meinen weiteren Videos über Sortieralgorithmen.
  51. Wenn euch das Video gefallen hat, dann gebt mir gerne einen Daumen hoch oder schreibt mir einen Kommentar. Und wenn ihr über neue Videos informiert werden möchtet, abonniert
  52. gerne meinen Kanal. Bis bald und Happy Coding!

Zum Nachlesen