반응형
int BSearch(vector<int>& v, int k) {
int low = 0;
int high = v.size() - 1;
int mid;
while (low <= high) {
mid = (low + high) / 2;
if (v[mid] == k)
return mid;
else if (v[mid] > k)
high = mid - 1;
else low = mid + 1;
}
return -1;
}
시간 복잡도
평균 시간복잡도 = O(logn)
최악 시간복잡도 = O(logn)
알고리즘
1. mid 값설정
2. v[mid] 값이 k 와 같다면 리턴
3. v[mid] > k 이면 high = mid + 1 로 설정 (이미 정렬되어있기 때문에 mid + 1 초과로는 탐색할 필요 없음)
4. v[mid] < k 이면 low = mid + 1
5. 반복
반응형
'Lecture > Algorithm' 카테고리의 다른 글
[탐색] 흑적나무 ( Red - Black Tree ) (0) | 2021.05.12 |
---|---|
[탐색] 이진탐색트리 (BST) (0) | 2021.05.11 |
[정렬] 기수정렬 ( Radix Sort ) (0) | 2021.05.09 |
[정렬] 힙 정렬 (Heap Sort ) (0) | 2021.05.09 |
[정렬] 병합정렬 ( Merge Sort ) (0) | 2021.05.09 |