[알고리즘] 중앙값

in_ho_·2023년 10월 22일
0

Algorithm

목록 보기
2/2
post-thumbnail

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 코드가 있어 조건식을 한 번 더 검사하므로 비효율적이게 됩니다.

0개의 댓글