Beschreibung
. Die Daten werden in einer doppelten Schleife abgearbeitet.
. Die innere Schleife umspannt jeweils den gesamten unsortierten Bereich: Dieser wird iterativ durchgearbeitet. Wenn ein Element größer ist als sein rechter Nachbar, so werden sie miteinander vertauscht.
. Nach jedem äußeren Schleifendurchlauf wurde der sortierte Bereich am Ende der Daten um mindestens 1 erhöht.
Programmcode
procedure BubbleSort ( var f : TArray; HighIndex : integer ) : string;
var i, j : integer;
begin
for i := HighIndex downto 1 // äußere Schleife
do for j := 0 to i
do if f[j] > f[j+1] then swap (f[j], f[j+1]); // innere Schleife
end; // BubbleSort
Aufwandsabschätzung
mittlerer-Aufwand:
. Die äußere Schleife wird n-1 mal durchlaufen.
. Die innere Schleife wird im Durchschnitt (n-1)/2 mal durchlaufen.
Daraus folgt der Aufwand .
worst-case-Aufwand:
Der maximale Aufwand beträgt ebenfalls O(n2), da beide Schleifen auch im schlechtesten Fall genauso oft durchlaufen werden. Der Unterschied ist nur die Anzahl der benötigten Tauschvorgänge (im besten Fall ist gar keiner nötig).
Sortierdauer
|