简介
查找: 在一些数据元素中,通过一定的方法找出与给定关键字相同的数据元素的过程。
列表查找(线性查找): 从列表中查找指定元素:
1. 输入:列表、需要查找的元素
2. 输出: 元素下标(未找到返回None或者-1)
Python内置查找函数(线性查找):index()
二分查找需要先排序,顺序查找不要排序。
顺序查找
也叫线性查找,从列表的第一个元素开始,顺序进行搜索,直到找到元素或搜索完整个列表。时间复杂度O(n)。
def linear_search(lista, value):
for index, i in enumerate(lista):
if i == value:
return index
else:
return None
二分查找
从有序列表的初始区域list[0:n]开始,通过对需要查找的值与候选区域中间的值比较,可以使得候选区域减少一半。
def binary_serach(lista, value):
left = 0
right = len(lista)-1
while left <= right:
mid = (left + right) // 2
if lista[mid] == value:
return mid
elif: lista[mid] > value:
right = mid - 1
else:
left = mid + 1
else:
return None