3.3.2.2 Sortierverfahren Bubble Sort

Auf dieser Seite vermittelt das Programm »bubblesort.py« einen Eindruck, wie die Python-Methoden »sort« und »sorted« Ganzzahlen innerhalb einer Liste aufsteigend sortieren.

Programm »bubblesort.py«

In der Abbildung 1 ist der Algorithmus des Sortierverfahrens Bubble Sort dargestellt, der dem Programm zugrunde liegt.

Bild 61
Abbildung 1: Darstellung des Algorithmus Bubble Sort[1]

In der Abbildung 2 ist die Ausführung des Bubble-Sort-Algorithmus in einer Tabelle dokumentiert:

  • aus der Tabelle geht hervor, wie der Bubblesort-Algorithmus die Ganzzahlen in der Liste aufsteigend sortiert
Bild 62
Abbildung 2: Ausführung des Algorithmus Bubble Sort
Übung

Aufgabe A31

Dokumentiere in einer Tabelle – wie in der Abbildung 2 dargestellt – die Ausführung des Algorithmus Bubble Sort:

  • Verwende statt der Liste [5, -2, 13, 0, 9] die Liste [56, 7, -21, 0, -6, 1]

Versuche zu vertstehen, wie der Algoritmus die Ganzzahlen in der Liste aufsteigend sortiert.

Übung

Aufgabe A32

Implementiere ein Programm »bubblesort.py« am Computer.

Das Programm soll aus drei Teilen bestehen:

  • der Callback-Funktion »eingeben«
  • der Callback-Funktion »sortieren«
  • der grafischen Benutzeroberfläche GUI - dem Hauptfenster (wie z. B. in der Abbildung 3 dargestell)
Bild 60
Abbildung 3: Ein Vorschlag für das Hauptfenster

Das Programm soll das Folgende leisten:

  • (E) Eingabe einer Liste, deren Elemente Ganzzahlen sind
  • (V) die Elemente (Ganzzahlen) der Liste aufsteigend sortieren.
  • (A) die aufsteigend sortierte Liste ausgeben

Führe das Programm u. a. mit folgenden Eingaben aus und teste, ob es fehlerfrei läuft und den gestellten Anforderungen entspricht:

  • [5, -2, 13, 0, 9]
  • [67, 12, -4, 45, 0, 2, 98, -34, 45]
  • [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
  • [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

  1. [1] Der Bereich »range(anzahl-(i+1))« umfasst die Zahlen von 0 bis ausschließlich anzahl-(i+1).
    • hat »anzahl« beispielsweise den Wert 6 und »i« den Wert 2, umfasst der Bereich »range(anzahl-(i+1))« die Zahlen 0, 1, und 2.