1. 중앙값
- 최대값, 최소값과 달리 중앙값을 구하는 절차는 매우 복잡합니다.
- 중앙값을 구할 수 있는 수많은 알고리즘을 생각할 수 있습니다.
/*
* 매개변수 3개의 중앙값
* */
static int med3(int a, int b, int c) {
if (a >= b) {
if (b >= c) {
return b;
} else if (a <= c) {
return a;
} else {
return c;
}
} else if (b > c) {
return c;
} else {
return b;
}
}
- 하지만 위의 방식이 아닌 아래의 방식으로 작성할 수도 있습니다.
/*
* 매개변수 3개의 중앙값
* */
static int med3_2(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;
}
- 하지만 이 방법은 앞선 중앙값 구하는 코드보다 비효율적입니다. 왜냐하면 b>= a와 b <= a를 반대로 뒤집은 a > b, a < b 코드가 있어 조건식을 한 번 더 검사하므로 비효율적이게 됩니다.