使用遞迴實現二分查詢的 Python 程式
當需要使用遞迴實現二分查詢時,可以定義一個方法,該方法檢查索引“high”是否大於索引“low”。根據“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”位置處的元素小於要搜尋的元素,則透過傳遞不同的引數集再次呼叫該函式。
- 現在定義了列表,並透過將此列表作為引數來呼叫該函式。
- 此操作的資料儲存在變數中。
- 此變數是在控制檯上顯示的輸出。
廣告