static int med3(inta, intb, intc) {
if ((b>=a&&c<=a) || (b<=a&&c>=a))
returna;
else if ((a>b&&c<b) || (a<b&&c>b))
returnb;
returnc;
}
最初のif文の判定
if ((b >= a && c<= a) || (b <= a && c >= a)
に着目します。ここでb >= aおよびb <= aの判定を裏返した判定(実質的に同一の判定)が、続くelse以降で
else if ((a > b && c < b) || (b <= a && c > b)
と行われます。つまり、最初のifが成立しなかった場合、2番目のifでも(実質的に)同じ判定を行っているため、効率が悪くなるのです。