顺序查找,就是逐个比较。。。
def chazhao(alist,v):
for i in range(len(alist)):
if alist[i] == v:
return i
return -1
if __name__ == '__main__':
alist = [4,5,88,2,33,12,344]
index = chazhao(alist,88)
if index != -1:
print('找到了',index)
else:
print('没找到')
二分查找法
示例:
def twofenchazhao(alist,v):
n = len(alist)
start = 0
end = n -1
mid = (start + end )//2
while start<=end:
if alist[mid] == v:
return True
elif alist[mid] > v:
end = mid -1
else:
start = mid + 1
return False
if __name__ == '__main__':
alist=[1,2,3,4,5,6,7,8,9]
print(twofenchazhao(alist,9))
print(twofenchazhao(alist,99))
还可以使用递归的方式实现
def twofenchazhao(alist,v):
n = len(alist)
if n==0:
return False
mid = n//2
if alist[mid] == v:
return True
elif alist[mid] < v:
return twofenchazhao( alist[ mid + 1: ],v )
else:
return twofenchazhao(alist[0:mid],v)
if __name__ == '__main__':
alist=[1,2,3,4,5,6,7,8,9]
print(twofenchazhao(alist,9))
print(twofenchazhao(alist,99))