Binary Search
- 중앙값을 사용해 검색 범위를 반으로 줄여가면서 빠르게 검색을 수행함.
- 시간복잡도: O(log n)
- 이진 검색을 하기 위해서는 자료가 정렬, 오름차순 상태여야 한다.
검색과정
- 자료의 중앙에 있는 원소를 고른다
- 중앙의 원소의 값과 찾고자 하는 목표 값을 비교한다
- 목표 값이 중아에 원소 값보다 작다면 자료의 왼쪽을, 크다면 자료의 오른쪽에 대해서 새로 검색을 수행한다
Code
arr = [2, 4, 7, 9, 11, 19, 13]
arr.sort()
def binarySearch(target):
low =0
high= len(arr) -1
while low <= high:
mid = (low + high) //2
if arr[mid]==target:
return mid
elif arr[mid] < target:
low = mid+1
else:
high= mid -1
return -1
Code(recursion)
arr = [2, 4, 7, 9, 11, 19, 13]
arr.sort()
def binarySearch(low, high, target):
if low > high:
return -1
mid = (low+high) //2
if target== arr[mid]:
return mid
elif arr[mid] < target:
return binarySearch(mid+1, high, target)
else:
return binarySearch(low, mid-1, target)