카테고리 없음
[Algorithm-PS] 이분 탐색
진진브레드
2024. 8. 6. 23:46
이분 탐색이란, 정렬되어 있는 배열에서 탐색 범위를 절반씩 줄여나가며 데이터를 탐색하는 방법이다.
보통 시작점 start, 중간점 mid, 마지막점 end 변수를 이용하여 탐색한다.
start가 end와 동일하거나 커지기 전까지(>= or >)(알고리즘에 따라 둘 중 하나가 선택됨) 반복하며 탐색 범위를 줄여나간다.
...
int[] arr = ...
int start = 0;
int end = arr.length - 1;
int findNumber = 10;
int mid = 0;
while(start <= end) {
// 또는 mid = start + ((end - start) / 2); 도 가능함
// 입력값의 범위에 따라 오버플로우 발생 여부가이 있는 경우 사용한다.
mid = (start + end) / 2;
// mid에 있는 값이 찾는 수 보다 큰 경우
if (arr[mid] > findNumber) {
end = mid - 1;
}
// mid에 있는 값이 찾는 수 보다 작거나 같은 경우
else {
start = mid + 1;
}
}
// mid에 우리가 찾는 숫자가 있음
위 코드처럼 이분 탐색을 구현할 수 있다.