查找:在一些数据元素中,通过一定的方法找出与给定关键字相同的数据元素的过程。
列表查找(线性查找):从列表中查找指定元素
输入:列表,带查找元素
输出:元素下标(未找到元素时返回None或者-1)
内置列表查找函数:index()
1、顺序查找
def linear_search(li, val):
for index, v in enumerate(li):
if v == val:
return index
else:
print("没有找到!")
return None
时间复杂度O(n) ,n表示列表的长度
2、二分查找
二分查找又叫折半查找,从有序的列表 的初始候选区li[0:n]开始,通过对查找元素的值与候选区中间值的比较,可以使候选区减少一半。
def binary_search(li, val):
left = 0
right = len(li) - 1
while left <= right:
mid = (left + right) // 2
if li[mid] == val:
return mid
elif li[mid] > val:
right = mid -1
else:
left = mid + 1
else:
return None
时间复杂度为O(logn)