一、顺序查找(线性查找)
#顺序查找(线性查找),按列表顺序进行查找。n
def line_search(list,val):
for i,v in enumerate(list):
if v==val:
return i
else:
return None
list=[1,2,3,4,5]
print('下标为:',line_search(list,3))
二、二分查找
2.1 思路
把一个列表排好序,取出中间值和要查找的值比较,如果中间值大,那么要找的值就一定在中间值左边。如果中间值小,那么要找的值就一定在中间值右边。如果相等,中间值就是要找的值。不断缩小查找范围,直到找到。
2.2 代码
#二分查找,把一个列表排序,取中间的值,比较大小,不断找中间值。log2n
def binary_search(list,val):
left=0
right=len(list)-1
while left<=right:
mid=(left+right)//2
if list[mid]==val:
return mid
elif list[mid]>val:
right=mid-1
else:
left=mid+1
else:
return None
list=[1,2,3,4,5]
print('下标为:',binary_search(list,3))