class Median{
static int med3(int a, int b, int c){
if(a >= b){
if(b >= c){
return b;
} else if(c >= a){
return a;
} else {
return c;
}
} else if(a > c) {
return a;
} else if(b > c) {
return c;
} else
return b;
}
public static void main(String[] args) {
System.out.println("med3(3,2,1) = " + med3(3,2,1)); // a>b>c
System.out.println("med3(3,2,2) = " + med3(3,2,2)); // a>b=c
System.out.println("med3(3,1,2) = " + med3(3,1,2)); // a>c>b
System.out.println("med3(3,2,3) = " + med3(3,2,3)); // a=c>b
System.out.println("med3(2,1,3) = " + med3(2,1,3)); // c>a>b
System.out.println("med3(3,3,2) = " + med3(3,3,2)); // a=b>c
System.out.println("med3(3,3,3) = " + med3(3,3,3)); // a=b=c
System.out.println("med3(2,2,3) = " + med3(2,2,3)); // c>a=b
System.out.println("med3(2,3,1) = " + med3(2,3,1)); // b>a>c
System.out.println("med3(2,3,2) = " + med3(2,3,2)); // b>a=c
System.out.println("med3(1,3,2) = " + med3(1,3,2)); // b>c>a
System.out.println("med3(2,3,3) = " + med3(2,3,3)); // b=c>a
System.out.println("med3(1,2,3) = " + med3(1,2,3)); // c>b>a
}
}
Q. 아래의 코드가 위의 코드보다 비효율적인 이유는?
static int med3(int a, int b, int c) {
if ((b >= a && c <= a) || (b <= a && c >= a))
return a;
else if ((a > b && c < b) || (a < b && c > b))
return b;
return c;
}
아래 코드의 첫번째 if문( b >= a 와 b <= a )과 두번째 if( a > b와 b > a )
첫번째 if문이 성립한 경우 두번째의 if문에서도 (실질적으로)같은 판단을 수행하므로 효율이 나빠진다.