《中学生可以这样学Python》P194-196
编写程序 使用顺序查找法判断列表中是否存在给定的元素 如果存在就返回索引 否则返回False
#查找算法案例分析
## 编写程序 使用顺序查找法判断列表中是否存在给定的元素 如果存在就返回索引 否则返回False
def seqSearch(lst,item):
for index,value in enumerate(lst):
if value==item:
return index
return False
lst=list(range(1,100,2))
pos=seqSearch(lst,3)
#print(pos)
if pos!=-1:
print(pos)
else:
print('not exists') #需要把return False改为return -1
编写程序 使用二分法查找列表中是否存在某个元素
##编写程序 使用二分法查找列表中是否存在某个元素
def binarySearch(lst,value):
start=0
end=len(lst)
while start<=end:
#计算中间位置
middle=(start+end)//2
#查找成功 返回元素对应的位置
if value==lst[middle]:
return middle
#在后面一半元素中继续查找
elif value>lst[middle]:
start=middle+1
#在前面一半中继续查找
elif value<lst[middle]:
end=middle-1
#查找不成功 则返回False
return -1
from random import randint
lst=[randint(1,50) for i in range(20)]
lst.sort()
print(lst)
result=binarySearch(lst,30)
if result !=-1:
print('成功找到,位置索引为',result)
else:
print('找不到,该数不存在')
结果:
>>> %Run test8.py
1
[4, 6, 7, 14, 17, 21, 26, 27, 30, 31, 31, 32, 35, 37, 37, 37, 38, 40, 41, 45]
成功找到,位置索引为 8