next up previous contents
Nächste Seite: Über dieses Dokument ... Aufwärts: Sortierverfahren Vorherige Seite: Sortierverfahren   Inhalt

Vergleiche und Austauschoperationen zählen

Wir verwenden eine (statische) Klassenvariable und wählen (vorsichtshalber ;-) den Datentyp long:

...
public class Quick extends Frame {

    static long vergleichezaehler;
    static long tauschzaehler;    
    int h[] = new int[101];

    public void sortiere(Container ct, int l, int r) {
        ...
        eintrag = h[(int)((l+r)/2)];
        do {
            vergleichezaehler++;
            while (h[i]<eintrag) {
                vergleichezaehler++;
                i++;
            }
            while (eintrag<h[j]) {
                vergleichezaehler++;
                j--;
            }
            if (i<=j) {
                g.setColor(Color.white);
                g.fillRect(i*5,20,5,100);
                g.fillRect(j*5,20,5,100);
                hilfsvar=h[i];
                h[i]=h[j];
                h[j]=hilfsvar;
                tauschzaehler++;
                g.setColor(Color.black);
                g.fillRect(i*5,120-h[i],3,h[i]);
                g.fillRect(j*5,120-h[j],3,h[j]);
                i++;
                j--;
            }
        } while (i<=j);
        if (l<j) sortiere(ct, l, j);
        if (r>i) sortiere(ct, i, r);
    }


    public static void main (String [] args) {
        Quick sprog = new Quick();
        WindowListener wl = new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.out.println(vergleichezaehler + " Vergleiche");
                    System.out.println(tauschzaehler + " Austausche");
                    System.exit(0); 
                }
            };
        ...
    }
}

Damit erhalten wir abhängig von der zufälligen Reihenfolge der Zahlen beispielsweise folgende Ausgaben:

alfred@duron:~/java/sort> java Bubble
2437 Vergleiche
2437 Austausche
alfred@duron:~/java/sort> java Quick
563 Vergleiche
187 Austausche



Alfred Nussbaumer 2003-02-10