使用递归实现二进制搜索的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("Elementfoundatindex ", str(my_result))
else:
print("Elementnotfound!")输出结果The list is [1, 9, 11, 21, 34, 54, 67, 90] Elementfoundatindex 0
解释
定义了一个名为“binary_search”的函数。
它以列表,“低”变量,“高”变量以及要搜索的元素作为参数。
然后,将变量“mid”分配给“高”和“低”变量的平均值。
如果“mid”处的元素与需要搜索的元素相同,则将其返回。
否则,如果位于“中间”位置的元素大于要搜索的元素,则通过传递不同的参数集来再次调用该函数。
否则,如果位于“中间”位置的元素小于要搜索的元素,则通过传递一组不同的参数来再次调用该函数。
现在定义了列表,并通过将该列表作为参数传递来调用函数。
该操作的数据存储在变量中。
此变量是控制台上显示的输出。