-
[D&C] Binary Search알고리즘/Algorithm Theory 2022. 6. 25. 18:41
이진 탐색
정렬된 A[0...n-1]의 배열에 대해 k값을 찾을 때, a의 중간값(median)을 k 와 비교하여 같으면 종료.
이진탐색은 실은 분할정복기법이다. 중간값을 k와 비교한 뒤에 배열의 절반에 대해서만 탐색을 계속한다.
즉 문제의 크기가 n/2인 동일한 작은 문제를 해결하다보면, 문제를 해결 할 수 있다.
이진탐색
# A가 정렬된 배열일때 A[a...b]에서 k값을 탐색 int binary_search(A[a...b], k, a, b): if a>b: return -1 mid = (a+b)/2 if A[mid] > k: return binary_search(A, k, a, mid-1) elif A[mid] < k: return binary_search(A, k, mid+1, b) else return mid
시간 복잡도 : O(logn)
점화식 : T(n) = T(n/2) + O(1)
'알고리즘 > Algorithm Theory' 카테고리의 다른 글
[Algorithm] Union-Find (2) 2024.02.20 [Backtracking] Subset Sum (0) 2022.06.25 [Master Theorem] 마스터 이론(정리) (0) 2022.06.20 [Divide-and-Conquer] 분할정복 (2) 2022.06.20 [Recursion] 재귀 with Hanoi Tower (0) 2022.06.17