binary search
原创2023年6月8日大约 2 分钟...约 617 字
# 定义二分查找函数
def binary_search(_list, val):
# 定义最低搜索范围索引
low = 0
# 定义最高搜索范围索引
high = len(_list) - 1
# 当最低索引仍然小于或等于最高索引时,继续循环
while low <= high:
# 打印当前的最低和最高索引
print(f"Low = {low}, High = {high}")
# 找出当前搜索范围的中间索引(向下取整)
mid = (low + high) // 2
# 如果中间元素等于目标值,就直接返回它的位置
if _list[mid] == val:
return mid
# 如果中间元素小于目标值,那么目标值应该在右边,因此更新最低索引为 mid + 1
elif _list[mid] < val:
low = mid + 1
# 如果中间元素大于目标值,那么目标值应该在左边,因此更新最高索引为 mid - 1
else:
high = mid - 1
# 如果在上面的循环中没有找到目标值,那么就打印当前的最低和最高索引,并返回 -1
print(f"Low = {low}, High = {high}")
return -1
# 定义一个有序列表
my_list = [3, 5, 5, 7, 8, 10, 13, 24, 29, 30, 32, 32, 33]
# 定义要查找的值
val = 7
# 在列表中搜索这个值,并打印出结果
print(binary_search(my_list, val)) # 这会打印出 7 在列表中的位置,也就是 3
公众号:AI悦创【二维码】

AI悦创·编程一对一
AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发、Web、Linux」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh
C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh
方法一:QQ
方法二:微信:Jiabcdefh
