본문 바로가기
알고리즘

이분탐색

by (ㅇㅁㅇ^) 2023. 9. 5.
lt     mid       rt
10 12 14 16 20 22 25 30

 

mid = (lt+rt) / 2 = (0+7) / 2

a[mid] > m → rt = mid - 1

a[mid] < m → lt = mid + 1

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static int solution(int n, int m, int[] a) {
        int answer = 0;
        Arrays.sort(a);
        int lt = 0, rt = n - 1;
        while(lt <= rt) {
            int mid = (lt + rt) / 2;
            if(a[mid] == m) {
                answer = mid + 1;
                break;
            } else if(a[mid] > m){
                rt = mid - 1;
            } else {
                lt = mid + 1;
            }
        }
        return answer;
    }
cs

 

 

 

출처 : 인프런 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

'알고리즘' 카테고리의 다른 글

재귀함수  (0) 2023.09.06
stream 사용  (0) 2023.09.06
좌표정렬(compareTo)  (0) 2023.09.04
삽입정렬  (0) 2023.09.01
버블정렬  (0) 2023.09.01