--- 顺序查找 ---
线性查找。从列表第一个元素开始,顺序进行搜索
直到找到元素或搜索到列表最后一个元素为止
--- 二分查找 ---
折半查找。从有序列表的初始候选区 li[0:n] 开始
通过对 待查找的值 与 候选区中间的值 比较,使候选区减少一半
def linear_search(li, val):
for index, v in enumerate(li):
if v == val:
return index
return None
def binary_search(li, val):
left, right = 0, len(li) - 1
# 候选区有值
while left <= right:
mid = (left + right) // 2
if li[mid] == val:
return mid
# 待查找的值在 mid 左侧
elif li[mid] > val:
right = mid - 1
# 待查找的值在 mid 右侧
else:
left = mid + 1
return None
li = [1,2,3,4,5,6,7,8,9]
print(binary_search(li, 3))