用Python实现二分查找算法
二分查找算法,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。它的思想是先确定待查找区间的中间位置,然后将待查找元素跟中间位置的元素进行比较。如果待查找元素等于中间位置的元素,查找成功;如果待查找元素小于中间位置的元素,则在左侧区间继续进行查找;如果待查找元素大于中间位置的元素,则在右侧区间继续进行查找。重复以上步骤,直到找到待查找元素或者查找区间为空。
下面是用Python实现二分查找算法的代码:
def binary_search(arr, target): left, right = 0, len(arr) - 1 while left <= right: mid = (left + right) // 2 if arr[mid] == target: return mid elif arr[mid] < target: left = mid + 1 else: right = mid - 1 return -1
上面的代码中,arr
是一个有序数组,target
是要查找的目标元素。使用两个指针left
和right
确定待查找区间的边界,初始时left
指向数组的第一个元素,right
指向数组的最后一个元素。然后,计算待查找区间的中间位置mid
,将待查找元素target
与中间位置的元素进行比较。如果相等,返回中间位置mid
;如果target
大于中间位置的元素,说明要在右侧区间继续查找,将left
的值更新为mid + 1
;如果target
小于中间位置的元素,说明要在左侧区间继续查找,将right
的值更新为mid - 1
。重复以上步骤,直到找到target
或者查找区间为空,此时返回-1表示未找到。
下面是将二分查找算法应用到字符串的例子:
str_list = ["pidancode.com", "hello", "world", "皮蛋编程", "Python"] target_str = "皮蛋编程" idx = binary_search(str_list, target_str) if idx != -1: print("找到了,位置在", idx) else: print("未找到")
上面的代码中,str_list
是一个字符串列表,其中包含了字符串"pidancode.com"、"hello"、"world"、"皮蛋编程"、"Python"。要查找的目标字符串是"皮蛋编程",使用binary_search
函数在str_list
中查找该目标字符串,如果找到了,输出该字符串所在的位置;否则,输出未找到。
相关文章