截至目前,我的函数找到了 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 语句。