Data structure & Algorithm

[Algorithm] 이분탐색 (Binary Search)

notty 2023. 12. 11. 13:21
728x90

배열을 정렬

중앙값을 찾는다 

중앙값을 기준으로 찾을 값이 큰 값 -> 반의 오른쪽으로 

중앙값을 기준으로 찾을 값이 작은 값 -> 반의 왼쪽으로

같다면 -> 찾은 값을 반환 -> break

 

오른쪽 왼쪽을 구분하기 위하여

start, end 값을 지정 

start = 0

end = len(배열)

 

중앙값 

(start + ) // 2

list_a = [1,2,3,4,5,6,7]

def binary_search(target, data):
    start = 0
    end = len(data) - 1
    while start<=end:
        mid = (start + end) // 2
        if data[mid] == target:
            print(target)
            break
        elif data[mid] > target:
            end = mid-1
            print(data[start:end])
        else:
            start = mid+1
            print(data[start:end])
    print('없다')

binary_search(3, list_a)

 

 

728x90
반응형