Число сравнений, выполненных в медиане 3 функции?

На данный момент моя функция находит медиану из 3 чисел и сортирует их, но всегда делает три сравнения. Я'Я думаю, что я могу где-то использовать вложенный оператор if, чтобы иногда моя функция делала только два сравнения.

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];
}

Я не уверен, что вижу, где я могу сделать это вложенное выражение if.

Ответы на вопрос(6)

Ваш ответ на вопрос