재귀를 사용하여 이진 검색을 구현해야 하는 경우 인덱스 '높음'이 인덱스 '낮음'보다 큰지 확인하는 메서드를 정의할 수 있습니다. 'mid' 변수에 존재하는 값을 기준으로 함수를 다시 호출하여 요소를 검색합니다.
목록은 이기종 값(즉, 정수, 부동 소수점, 문자열 등과 같은 모든 데이터 유형의 데이터)을 저장하는 데 사용할 수 있습니다.
아래는 동일한 데모입니다 -
예
def binary_search(my_list, low, high, elem): if high >= low: mid = (high + low) // 2 if my_list[mid] == elem: return mid elif my_list[mid] > elem: return binary_search(my_list, low, mid - 1, elem) else: return binary_search(my_list, mid + 1, high, elem) else: return -1 my_list = [ 1, 9, 11, 21, 34, 54, 67, 90 ] elem_to_search = 1 print("The list is") print(my_list) my_result = binary_search(my_list,0,len(my_list)-1,elem_to_search) if my_result != -1: print("Element found at index ", str(my_result)) else: print("Element not found!")
출력
The list is [1, 9, 11, 21, 34, 54, 67, 90] Element found at index 0
설명
- 'binary_search'라는 함수가 정의되었습니다.
- 리스트, 'low' 변수, 'high' 변수, 검색할 요소를 파라미터로 받습니다.
- 그런 다음 변수 'mid'에는 'high' 변수와 'low' 변수의 평균이 할당됩니다.
- 'mid'에 있는 요소가 검색해야 하는 요소와 동일한 경우 반환됩니다.
- 그렇지 않고 'mid' 위치의 요소가 검색할 요소보다 크면 다른 매개변수 집합을 전달하여 함수를 다시 호출합니다.
- 그렇지 않으면 'mid' 위치에 있는 요소가 검색할 요소보다 작으면 다른 매개변수 집합을 전달하여 함수를 다시 호출합니다.
- 이제 목록이 정의되고 이 목록을 매개변수로 전달하여 함수가 호출됩니다.
- 이 작업의 데이터는 변수에 저장됩니다.
- 이 변수는 콘솔에 표시되는 출력입니다.