이진 탐색

: 데이터가 정렬돼 있는 상태에서 원하는 값을 찾아내는 알고리즘
- 대상 데이터의 중앙 값과 찾고자 하는 값을 비교해 데이터의 크기를 절반씩 줄이면서 대상을 찾는다. → 업/다운 게임
- 시간 복잡도 - O(logN)
이진 탐색 동작 방식 (오름차순)
- 현재 데이터셋의 중앙 값을 선택한다
- 중앙 값 > 타깃 데이터 일 때 중앙 값 가준으로 왼쪽 데이터셋을 선택한다.
- 중앙 값 < 타깃 데이터 일 때 중앙 값 기준으로 오른쪽 데이터셋을 선택한다.
- 과정 1~2를 반복하다가 중앙값 == 타깃 데이터일 때 탐색을 종료한다.
function binarySearch(arr, target) {
let left = 0;
let right = arr.length - 1;
while (left <= right) {
let mid = Math.floor((left + right) / 2);
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
💡 left = mid + 1이고, right = mid - 1인 이유 → mid는 target을 포함할 숫자 범위에서 명확히 제외되기 때문 !
'[Algorithm] 알고리즘' 카테고리의 다른 글
| [백준][Python] 1926번 그림 - DFS,BFS (6) | 2024.07.16 |
|---|---|
| 최소 신장 트리(MST) (1) | 2024.07.09 |
| 그래프 (1) | 2024.07.09 |
| 플로이드 워셜 알고리즘 (0) | 2024.07.09 |
| [Python][백준1931] 회의실 배정 (3) | 2024.07.02 |