Python程序实现不使用递归的二分查找

Python程序实现不使用递归的二分查找

当需要实现二分查找但不使用字典时,可以定义一种方法,检查列表的第一个和最后一个索引,并获取列表的中值。

然后将其与需要检查的值进行比较。如果找到,则返回该值。否则,返回-1。

重要的是记住,二分查找仅适用于已排序的元素,无论是升序还是降序。

列表可用于存储异构值(即任何数据类型的数据,例如整数、浮点数、字符串等)。

以下是相同操作的演示 —

例子

def binary_search(my_list, elem):
   low = 0
   high = len(my_list) - 1
   mid = 0
   while low <= high:
      mid = (high + low) // 2
      if my_list[mid] < elem:
         low = mid + 1
      elif my_list[mid] > elem:
         high = mid - 1
      else:
         return mid
   return -1

my_list = [ 1, 9, 11, 21, 34, 54, 67, 90 ]
elem_to_search = 1
print("该列表为")
print(my_list)

my_result = binary_search(my_list, elem_to_search)

if my_result != -1:
   print("元素索引为", str(my_result))
else:
   print("未找到元素!")

输出

该列表为
[1, 9, 11, 21, 34, 54, 67, 90]
元素索引为 0

解释

  • 定义名为“binary_search”的方法,将列表和要搜索的元素作为参数。
  • 将变量low分配给0,将变量mid分配给0。
  • 变量high被分配为列表的长度-1。
  • 当值“low”小于或等于“high”时,执行位运算除法以获取“mid”变量的值。
  • 首先从低到中索引搜索元素,如果该值小于中索引处的值。
  • 否则,如果该值大于中且小于高,则从中到高索引搜索元素。
  • 现在定义一个列表。
  • 通过将上面的列表作为参数调用该方法。
  • 将此操作的数据存储在变量中。
  • 该变量是在控制台上显示的输出。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程