查找
顺序查找
第一种
def sorted(li,value):
ind=0
for i in range(len(li)-1):
if li[i]==value:
ind=i
return ind
print(sorted([1,2,3,4,5,6],5))
第二种
def sorted(li,value):
for ind,val in enumerate(li):
if li[ind]==value:
return ind
else:
return None
print(sorted([1,2,3,4,5,6],12))
折半(二分)查找
#前提是该列表有序
def binary_sorted(li,value):
left = 0
right = len(li)-1
#当列表仅有一个值是left=right
while left<=right:
# 无需使用int(),因为c中没有//,一般使用/ 然后int((left+right)/2)
mid = (left+right)//2
if value==li[mid]:
return mid
elif value>li[mid]:
left=mid+1
elif value<li[mid]:
right = mid-1
else:
return None
print(binary_sorted([1,5,45,78,84,90],84))