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 |