查找:在一些元素中,通过一定的方法找出与给定关键字相同的元素的过程
列表查找(线性表查找):从列表中查找指定元素
- 输入:列表,待查找元素
- 输出:元素下标(元素未找到返回 -1 或者 None )
内置列表查找函数:index()
查找方式:
- 顺序查找(Linear Search):从列表第一个元素往列表最后一个元素进行搜索
- 二分查找:从有序列表的初始候选区 li[0:n] 开始,通过对待查找的值与候选区中间值进行比较,可以使候选区减少一半
```python
顺序查找
def linear_search(li, target): for index, val in enumerate(li):
return -1if val == target:
return index
二分查找:用于有序列表
def binary_search(li, target): left = 0 right = len(li) - 1 # 获选区有值 while left <= right:
# >> 左移运算符会向下取整
# / 当无法整除时会产生小数点
# // 当无法整除时会向下取整
mid = (left + right) >> 1
if li[mid] == target:
return mid
elif li[mid] > target: # 目标值在mid的左侧
right = mid - 1
else: # 目标值在mid的右侧
left = mid + 1
else:
return -1
if name == ‘main‘: l = [i for i in range(1, 100, 3)] res = linear_search(l, 82)
# res = binary_search(l, 82)
print("82 在列表中的索引位置:%d" % res)
```