N’Abend,
bei Sortierverfahren können Comparatoren übergeben werden, die standardmäßige compareTo(Object) Methode wird dabei ignoriert (das ist sinnvoll, wenn man Objekte nach verschiedenen Kriterien sortieren will). Ich würde empfehelen, einen solchen Komparator zu schreiben, der das Zählen für dich übernimmt:
import java.util.Comparator;
public class CompCounter> implements Comparator {
public int counter = 0;
@Override
public int compare(T o1, T o2) {
counter ++;
return o1.compareTo(o2);
}
}
Das Programm könnte dann so aussehen:
public static void main(String[] args) {
Integer[] array = new Integer[]{3, 2, 7, 1, -1, 8, 3, -7, 9, 4, 0, 3};
analyze(array);
}
public static void analyze(Integer[] values) {
System.out.println("Unsortiert: " + Arrays.asList(values));
CompCounter comparator = new CompCounter();
// Ab Java 1.7 auch ‚CompCounter()‘ (diamond operator)
Arrays.sort(values, comparator);
System.out.println("Sortiert: " + Arrays.asList(values));
System.out.println(comparator.counter + " compareTo()-Aufrufe bei einer Arraygröße von " + values.length);
}
Schöne Grüße, Keks