티스토리 뷰
- 이진탐색 혹은 이분탐색이라고도 한다.
- 이미 정렬되어 있는 자료구조에서 특정 값을 찾을 때, 탐색 범위를 절반씩 나누면서 해당 값을 찾는다.
- 순차 탐색에 비해 빠르다는 장점을 가지고 있다.
시간복잡도
- 전체 탐색: O(N)
- 이진 탐색: O(logN)
- 예시) 배열의 길이가 8인 경우 (n = 8):
- 첫 번째 비교에서 배열을 절반으로 나눔 (4개 요소 남음)
- 두 번째 비교에서 다시 절반으로 나눔 (2개 요소 남음)
- 세 번째 비교에서 또 절반으로 나눔 (1개 요소 남음)
- 따라서, 총 3번의 비교가 필요함. ( log2(8)=3 )
- 예시) 배열의 길이가 8인 경우 (n = 8):
처리순서
- 정렬이 되어 있거나 정렬을 함
- left, right로 mid값을 결정
- mid와 구하고자 하는 값(target)을 비교
- 구할 값이 mid보다 큰 경우, left = mid + 1
- 구할 값이 mid보다 낮은 경우, right = mid - 1
- right < left가 될 때까지 반복
- mid값과 target값이 같으면 종료
관련 문제도 풀어봤는데 다시 풀어봐야 할 것 같다.
최근에 올라온 글
TAG
- 알고리즘
- Kotlin
- routing
- 프로그래머스
- springboot
- swagger3
- gradle
- Front
- spring boot3
- 이진탐색
- 아키텍트
- svelte
- open api3
- maven
- 8.0.32
- sw아키텍처
- eslint
- CSR
- algorithm
- Prettier
- binary search
- mysql
- SSR
- mysql_secure_installation
- sveltekit
- Java17
- swagger
- WebSocket
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함