算法入门--Day2
第二块内容
什么是列表查找
查找:在一些数据中,通过一定的方法找出与给定关键字相同的数据元素的过程
列表查找:从列表中查找指定元素
输入:列表,待查找元素
输出:元素下标
内置函数:index()
顺序查找
顺序查找:也叫线性查找,从列表第一个元素开始,顺序进行搜索,知道找到元素或搜索到列表的最后一个元素为止
def linear_search(li,val):
for index,v in enumerate(li):
if v == val:
return index
else:
return None
其时间复杂度为 O(n)
二分查找
二分查找,又叫折半查找,从有序列表的初始候选区li[0:n]开始,通过对待查找的值与候选区中间值的比较,可以是候选区减少一半
简单说就是找到有序列表的中间值,根据带查找数值与中间值的比较进行查找
补:有序列表每一次分割留下的部分就叫做候选区
def binary_search(li,val):
left = 0 # 左侧元素下标
right = len(li) - 1 # 右侧元素下标
which left <= right: #只有right>=left 的时候才可能会有待查找的值
mid = (left + right)//2 #确定中间值的下标
if li[mid] < val:
left = mid + 1
elif li[mid] > val:
right = mid - 1
else:
return mid
else:
return None
二分查找与顺序查找的比较

浙公网安备 33010602011771号