使用递归实现二分查找的 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”位置处的元素小于要搜索的元素,则通过传递不同的参数集再次调用该函数。
  • 现在定义了列表,并通过将此列表作为参数来调用该函数。
  • 此操作的数据存储在变量中。
  • 此变量是在控制台上显示的输出。

更新于: 2021年3月13日

4K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告