Obwohl dieses Sortierverfahren zu den ungünstigsten zählt, wird es häufig dargestellt. Das Datenfeld wird immer (n - 1) mal durchlaufen (wobei n die Anzahl der zu sortierenden Daten ist): Jedesmal werden benachbarte Elemente in die richtige Reihenfolge vertauscht - die Datenreihe ist sortiert, wenn kein Austausch mehr notwendig ist. Obwohl die Zahl der Vergleiche und die Zahl der eventuell notwendigen Tauschvorgänge bei jedem Durchlauf um 1 abnimmt, ist dieses Verfahren vor allem bei »ungünstig« sortierten Ausgangsdaten sehr langsam.
Beispiel:
Code:
import java.awt.*;
import java.util.Random;
public class bubble extends java.applet.Applet {
int h[] = new int[101];
public void init() {
int i;
Random r = new Random();
for (i=1; i<=100; i++) {
h[i] = (int) (r.nextDouble()*100);
}
}
public void paint (Graphics g) {
int i;
int j;
int l;
int hilfsvar;
g.setColor(Color.white);
g.fillRect(0,0,500,100);
g.setColor(Color.black);
for (l=1;l<=100;l++) {
g.fillRect(l*5,100-h[l],3,h[l]);
}
for (i=2;i<=100;i++) {
for (j=100; j>=i; j--) {
for (int k=1;k<100000;k++) {}
if (h[j-1]>h[j]) {
hilfsvar = h[j];
h[j] = h[j-1];
h[j-1] = hilfsvar;
g.setColor(Color.white);
g.fillRect((j-1)*5,0,5,100);
g.fillRect(j*5,0,5,100);
g.setColor(Color.black);
g.fillRect((j-1)*5,100-h[j-1],3,h[j-1]);
g.fillRect(j*5,100-h[j],3,h[j]);
}
}
}
}
}
Kommentar:
Der Algorithmus erhält seinen Namen offenbar von der Tatsache, dass die Elemente - ähnlich wie Blasen in einem Glas Mineralwasser - aufsteigen, bis sie an der richtigen Stelle sind.
| zurück zu Sortieralgorithmen |