无需递归即可实现二进制搜索的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("The list is")

print(my_list)

my_result = binary_search(my_list, elem_to_search)

if my_result != -1:

   print("在索引处找到元素 ", str(my_result))

else:

   print("找不到元素!")

输出结果
The list is

[1, 9, 11, 21, 34, 54, 67, 90]

在索引处找到元素  0

解释

  • 定义了一个名为“ binary_search”的方法,该方法将列表和要搜索的元素作为参数。

  • 将变量low分配给0,将变量mid分配给0。

  • 变量high分配了list-1的长度。

  • 仅当值“低”小于或等于“高”时,才执行按位底数除法以获取“中”变量的值

  • 如果该值小于中索引处的值,则首先从低索引到中索引进行搜索。

  • 否则,如果该值大于中值但小于高值,则从中索引到高索引进行搜索。

  • 现在,定义了一个列表。

  • 通过将上面的列表作为参数传递来调用该方法。

  • 该操作的数据存储在变量中。

  • 此变量是控制台上显示的输出。

以上是 无需递归即可实现二进制搜索的Python程序 的全部内容, 来源链接: utcz.com/z/327646.html

回到顶部