什么是二分查找算法
二分查找算法,也称为对数查找或半间隔查找,是一种在排序数组中查找项目位置/索引的查找算法。之所以被称为二分查找算法,是因为它在查找项目位置时将数组分为两部分。
需要注意的是,在使用二分查找算法查找数组中的项目之前,数组或列表必须按升序排序。
二分查找算法在Python中的实现
下面是在Python中实现自己的二分查找算法需要执行的步骤:
1.初始化三个变量:开始索引、结束索引和中间索引。开始索引将从0开始,结束索引将是列表或数组中最后一项的索引,例如,在前面的示例中为9,中间索引将是:开始索引+(结束索引-开始索引)//2。
2.在中间索引处查找该项目。如果在中间索引处找到该项,返回其位置。
3.如果要查找的项目大于中间索引处的项目,通过为其指定值:中间索引 + 1来更新开始索引。
4.否则,如果要查找的项小于中间索引处的项,则通过为其指定值:中间索引 - 1来更新结束索引。
5.重复步骤2至4,直到开始索引小于或等于结束索引。如果开始索引大于结束索引,则找不到该项。
lst=[20,32,42,80,51,90,10,100,8]
lst.sort()
二分法查找的基础是有序序列
print(lst)
t = 5
c = 0
定义查找的数和计数
left, right = 0, len(lst)-1
0-8
定义查找的左右边界
print(left,right)
f=0
while left <= right:
当左边界小于等于右边界
# mid = left+(right-left)//2
mid = (right+left)//2
定义中间值的索引
c+=1
print(left,right,c)
if t > lst[mid]:
left = mid+1
如果查找值大于中间值索引的对应的值,则更新左边界为中
间索引+1
elif t < lst[mid]:
right = mid-1
else:
f=1
print("Yes")
print(c)
break
if f==0:
print('not found')