이진 탐색(Binary Search)은 정렬된 데이터셋에서 특정한 값을 효율적으로 찾기 위한 알고리즘이며, 분할 정복 전략을 사용하여 작동한다.
def binary_search(arr, x):
low = 0
high = len(arr) - 1
mid = 0
while low <= high:
mid = (high + low) // 2
# x가 mid 위치에 있으면 mid 반환
if arr[mid] < x:
low = mid + 1
# x가 mid 위치에 있으면 mid 반환
elif arr[mid] > x:
high = mid - 1
# x가 중간에 위치해 있을 때
else:
return mid
# x가 리스트에 존재하지 않는 경우
return -1
def binary_search(arr, x):
low = 0
high = len(arr) - 1
mid = 0
while low <= high:
mid = (high + low) // 2
# x가 mid 위치에 있다면 인덱스 반환
if arr[mid] < x:
low = mid + 1
elif arr[mid] > x:
high = mid - 1
else:
return mid
# x가 리스트에 없으면 -1 반환
return -1
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
result = binary_search(data, 7)
if result != -1:
print(f"Element found at index {result}")
else:
print("Element not found in the list")
이 코드는 7이라는 값을 정렬된 리스트에서 찾으려고 시도하고, 해당 값의 인덱스를 출력하거나 리스트 내에 값이 없을 경우 메시지를 출력한다.