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