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