Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

재귀로 이진 검색을 구현하는 Python 프로그램

<시간/>

재귀를 사용하여 이진 검색을 구현해야 하는 경우 인덱스 '높음'이 인덱스 '낮음'보다 큰지 확인하는 메서드를 정의할 수 있습니다. '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' 위치에 있는 요소가 검색할 요소보다 작으면 다른 매개변수 집합을 전달하여 함수를 다시 호출합니다.
  • 이제 목록이 정의되고 이 목록을 매개변수로 전달하여 함수가 호출됩니다.
  • 이 작업의 데이터는 변수에 저장됩니다.
  • 이 변수는 콘솔에 표시되는 출력입니다.