이진 탐색(Binary Search)

동작 원리

1,2,3,4,5,6,7,8,9,10
1,2,3,4,**5**,6,7,8,9,10
6,7,**8**,9,10
6,**7**

이진 탐색 구현

def binary_search(target, data):
    data.sort()
    start = 0 			# 맨 처음 위치
    end = len(data) - 1 	# 맨 마지막 위치

    while start <= end:
        mid = (start + end) // 2 # 중간값

        if data[mid] == target:
            return mid 		# target 위치 반환

        elif data[mid] > target: # target이 작으면 왼쪽을 더 탐색
            end = mid - 1
        else:                    # target이 크면 오른쪽을 더 탐색
            start = mid + 1
    return

DFS(Depth-First-Search, 깊이 우선 탐색)