1.顺序查找:时间复杂度为
#顺序查找:
def linear_search(li,val):
#遍历列表li
for ind,v in enumerate(li):
if v==val:
return ind
else:
return None
if __name__ == "__main__":
li = [1,2,3,4,5,6]
a = linear_search(li,4)
print(a)
输出:3
2.二分查找:时间复杂度为
#二分查找
def binary_search(li,val):
left = 0
right = len(li)-1
while left <= right:
mid = (left+right)//2
if li[mid] == val:
return mid
#如果val大于中间值,则让left指向mid+1
elif li[mid]<val:
left = mid+1
elif li[mid]>val:
right = mid-1
else:
return None
if __name__ == "__main__":
li = [1,2,3,4,5,6]
a = binary_search(li,4)
print(a)
输出:3
注:python内置的函数index()是采用顺序查找的方式,因为虽然二分查找的速度快,但其有一个前提条件:列表必须是已排好序的。