탐색 범위를 두 부분으로 분할하면서 찾는 방식
- 정렬
- low: 최소값의 인덱스, high: 최고값 인덱스, mid: 중간값 인덱스
- mid와 내가 구하고자 하는 값과 비교
- 구할 값이 mid보다 클 때: low = mid+1
구할 값이 mid보다 작을 때: high = mid - 1- low > high 때 까지 반복
#include <iostream>
using namespace std;
int main() {
int arr[501];
for(int i=1;i<501;i++) {
arr[i]=i;
}
int target = 62; // 타겟 값
// 이분 탐색 수행
int low = 1, high = 500; // low, high 초기화
while(low<=high) {
int mid = (low+high)/2
if(mid==target) {
cout<<"탐색 완료"<<endl;
break;
} else if(mid>target) {
high = mid-1;
} else {
low = mid+1;
}
}
return 0;
}
O(logn)