算法之查找
1. 查找
给定一个指定元素和列表,从列表中查找出指定元素
- 输入:列表、待查找元素
- 输出:元素下标
2. 顺序查找
从第一个元素顺序进行搜索,直到找到该元素或者最后一个元素为止
时间复杂度:O(n)
def linear_search(li, val):
for ind, v in enumerate(li):
if v == val:
return ind
else:
return None
3. 二分查找
通过比较待查找的值与候选区中间值,值候选区减少一半
必须是有序列表
时间复杂度:O(logn)
def binary_search(li, val):
left = 0
right = len(li) - 1
while left <= right: # 候选区有值
mid = (left + right) // 2
if mid == val:
return mid
elif li[mid] > val: # 待查找的值在mid的左侧
right = mid - 1
else: # 待查找的值在mid的右侧
left = mid + 1
else:
return None