Impressum
< Arrays 3 - Suchen Inhalt Arrays 5 - Selectionsort >

Arrays in Python - Bubblesort

Sortieren dient dazu, einen Array in die richtige Reihenfolge zu bringen. Ein Array aus Zahlen kann z.B. aufsteigend sortiert werden, d.h. jedes Element feld[i] ist kleiner oder gleich dem nachfolgenden Element feld[i+1].
Ein Array mit Strings wird lexographisch sortiert (also so wie im Wörterbuch).
Neben aufsteigen kann auch absteigend sortiert werden, d.h. jdede Element an Position i ist größer als seine Nachfolger ab Position i+1.

Bubblesort

Beim Bubblesort wird eine Blase (engl. Bubble) druch das Array geschoben. In der Blase sind immer zwei aufeinanderfolgende Elemente des Arrays. Ist das erste Element in der Blase größer als das zweite, werden die Elemente vertauscht.
Wenn die Blase komplett durch das Array geschoben wurde, und nichts vertauscht wurde ist das Feld sortiert. Anderenfalls wird die Blase nochmals durch das Feld geschoben.

Also ist der Ablauf wie folgt:
  1. Vergleiche alle Paare feld[i] und feld[i+1]
    • ist feld[i]>feld[i+1], dann vertausche sie mit einem Dreieckstausch
    • merk dir, dass etwas vertauscht wurde
  2. Wenn etwas im letzten Durchlauf vertauscht wurde gehe zu 1.)
Bei der Umsetzung ist zu beachten, dass die Schleife, welche die Blase durchschiebt nur bis zur Länge-2 geht, da sonst die Blase über den Rand des Arrays hinausragt.
Bubblesort example (animated gif)

Bubbelsort in Pseudocode

Endlos-Schleife: (wird abgebrochen, wenn fertig sortier wurde)
    vertauscht = False    
    für i von 0 bis zur Länge von feld:
        wenn feld[j] größer ist als feld[j+1]:
            vertausche feld[j] mit feld[j+1]
            vertauscht = True
    Wenn nichts verauscht wurde:
        das sortieren ist beendet
        

Bubbelsort als Python Unterprogramm


def bubblesort(feld):    
  while True:
    vertauscht = False
    for j in range(len(feld)-1):
        if feld[j]>feld[j+1]:
            tmp       = feld[j]
            feld[j]   = feld[j+1]
            feld[j+1] = tmp
            vertauscht = True
    if vertauscht == False:
        break
        
Online ausprobieren

Bubbelsort als Struktogramm

Bubblesort Struktogramm

Bubbelsort als Struktogramm für BW Abi ab 2024

 Bubbelsort Struktogramm