업데이트:

정렬되어있는 리스트에서 범위를 절반씩 줄여나가며 탐색함.

구현

Python 3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#arr : 오름차순 정렬된 배열

#재귀
def binarySearch(arr, l, r, x):
  if r >= l:
    mid = l + (r-l) // 2
    if arr[mid] > x:
      return binarySearch(arr, l, mid-1, x)
    elif arr[mid] < x:
      return binarySearch(arr, mid+1, r, x)
    else: return mid
  else: return -1

#반복
result = -1
while (l < r):
  mid = (l+r) // 2
  if arr[mid] > x: r = mid-1
  elif arr[mid] < x: l = mid+1
  else:
    result = mid
    break

댓글남기기