Binary Search(python)
이진 탐색
이진 탐색은 O(logN)으로 선형 탐색 O(n)보다 빠르다.
단, 이진 탐색은 정렬되어 있어야 한다.
코드를 보지 않고 처음부터 작성해보자~!
이진 탐색 구현 코드
- 반복문 사용.
def solution(nums, x):
answer = -1
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if x == nums[mid]:
answer = mid
return answer
elif:
x < nums[mid]:
right = mid - 1
else:
left = mid + 1
return answer
- 재귀 사용.
def solution(nums, x, left, right):
if left > right:
return -1
mid = (left + right) // 2
if x == nums[mid]:
return mid
elif x < nums[mid]:
return solution(nums, x, left, mid - 1)
else:
return solution(nums, x, mid + 1, right)