二分查找算法
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。
def half_select():
num=random.randint(0,100) # 生成随机数
lists=[i for i in range(1,101)] # 定义一个用于查找的列表
return_list=[] # 记录每次查找的索引
xiao=0 # 最小值
da=len(lists)-1 # 最大值
while True:
obj=(xiao+da)//2 # 计算半值
if lists[obj] > num:
da=obj-1 # 如果查找的数字大于随机数,更新最大值
return_list.append(obj)
elif lists[obj] < num:
xiao=obj+1 # 如果查找的数字小于随机数,更新最小值
return_list.append(obj)
else:
return_list.append(obj)
dicts={
'随机数':num,
'每次查找的索引':return_list,
'最终索引':obj
}
print(dicts)
return dicts