线性查找与二分查找
线性查找
def linear_search(li, value):
for index, v in enumerate(li): # 枚举,返回(index, value)
if v == value:
return index
else:
return None
二分查找(有序列表)
def binary_search(li, value):
left = 0 # 表头
right = len(li) - 1 # 表尾
while left <= right: # 查找的区间还有值
mid = (left + right) // 2
if li[mid] == value:
return value
elif li[mid] > value: # 需要查找的value在mid左侧
right = mid - 1
else: # # 需要查找的value在mid右侧
left = mid + 1
else:
return None