查询算法(python实现)
#1.顺序查询
思路:传递查询对象和需查询值,利用enumerate()函数进行索引序列组合,按下标递进查询结果(注:已查到的第一个为输出结果)
代码如下
def linear_search(li, val):
for ind, vl in enumerate(li):
if vl== val:
return ind
else:
return None
#2.二分查询
思路:查询对象需为有序序列,以左边界下标小于右边界下标为跳出条件、下标中值为判断对象,对序列进行二分(需要设置中值下标(mod_x)、左边界(left)、右边界(right),比较中值与查询值大小,缩小查询范围)直到查询到结果为止。
代码如下:
def binary_search(li,val):
left = 0
right = len(li)
while left <= right:
mod_x = (left+right)//2
if li[mod_x] == val:
return mod_x
elif li[mod_x] > val:
right = mod_x -1
else :
left = mod_x+1
else :
return None