start=시작값
end=끝값
mid = (start+end)/2
만약 target값이 A[start] 보다 크면 end = mid-1,
tartget값이 A[end] 보다 작으면 start = mid + 1
A[mid] > target 이면 end=mid-1
A[mid] < target 이면 start=mid+1
A[mid] == target 이면 답 찾음!
근데, c++에는 stl 내장함수로 binary_search(start, end, target)
함수가 있기 때문에 매우매우 편리하게 사용할 수 있다.
시작 주소(start)와 끝나는 주소(end)
를 넣어주면 된다.내가 찾고 싶은 대상(target)
이다. 반환 타입은 bool
타입으로, 있으면 1(true), 없으면 0(false)를 반환
한다.다만, 이진탐색이라는 것은 데이터가 정렬되어 있다는 전제하에 가능
하다.
이 때, 정렬
을 하려면 sort() 함수
를 이용하면 된다.