Anzahl der durchgeführten Vergleiche im Median von 3 Funktionen?

Ab sofort findet meine Funktion den Median von 3 Zahlen und sortiert sie, aber es werden immer drei Vergleiche durchgeführt. Ich denke, ich kann irgendwo eine verschachtelte if-Anweisung verwenden, sodass meine Funktion manchmal nur zwei Vergleiche vornimmt.

int median_of_3(int list[], int p, int r)
{
    int median = (p + r) / 2;

    if(list[p] > list[r])
        exchange(list, p, r);
    if(list[p] > list[median])
        exchange(list, p, median);
    if(list[r] > list[median])
        exchange(list, r, median);

    comparisons+=3;                // 3 comparisons for each call to median_of_3

    return list[r];
}

Ich bin mir nicht sicher, wo ich diese geschachtelte if-Anweisung platzieren kann.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage