Python

이진 탐색

JAEJUNG 2021. 7. 27. 19:13

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 배열이 주어질 때 4가 어느 위치에 있는지

이진 탐색을 통해 찾아라.

 

arr = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

def binary_search(arr,  target,  start,  end):
  if start > end:
    return None
  mid = (start+end)//2
  
  if arr[mid] == target:
    return mid
  elif arr[mid] > target:
    return binary_search(arr,  target,  start,  mid-1) #arr[mid]=target이 아니니까
  else:
    return binary_search(arr,  target,  mid + 1,  end)
  

target = 4
start = 0
end = len(arr)-1  
result = binary_search(arr,  target,  start,  end)

if result == None:
  print("값이 없음")
else:
  print(result+1,  "번째에 있음")

 

'Python' 카테고리의 다른 글

'이것이 코딩테스트다'  (0) 2021.08.26
DFS 구현하기  (0) 2021.07.24
에라토스테네스의 체  (0) 2021.07.20
input()과 sys.stdin.readline()의 차이  (0) 2021.07.15