查找算法的思路及代码实现
1、顺序查找
从前到后,顺序进行查找与关键字相符的元素。
时间复杂度:O(n) or O(1)
def search(li,key):
for index,i in enumerate(li):
if i==key:
return index
return -1
li=[1,2,5,6,77,88]
print(search(li,6))
2、折半查找
选择中间的元素,进行比较,每次排除一半的元素。
折半查找的前提:列表中的元素必须是有序。
时间复杂度:O(logn) or O(1)
def findMiddle(li,key):
start=0
end=len(li)-1
while start<=end:
mid=(start+end)//2
if li[mid]==key:
return mid
elif key<li[mid]:
# 取前半段(左)
end=mid-1
elif key>li[mid]:
start=mid+1
return -1
li=[1,2,5,6,77,88]