python3 二分法查找

'''
二分法查找
有序列表
掐头去尾取中间
查找列表中xx在不在列表中,在,则返回索引值
'''
# lst = [1, 4, 6, 8, 9, 21, 23, 26, 35, 48, 49, 54, 67, 89, 99] #使用in判断,不使用二分法
# n = 49
# for i, v in enumerate(lst):
# if v == n:
# print("找到了,索引为%d" % i)
# break
# else:
# print("没找到.")

'''二分查找'''
# lst = [1, 4, 6, 8, 9, 21, 23, 26, 35, 48, 49, 54, 67, 89, 99]
# n = 49
# left = 0
# right = len(lst) - 1
# while left <= right:
# mid = (left + right) // 2
# if n > lst[mid]:
# left = mid + 1
# elif n < lst[mid]:
# right = mid - 1
# else:
# print("找到了,索引为:%d" % mid)
# break
# else:
# print("没找到.")

'''使用递归调用完成二分法查找'''
lst = [1, 4, 6, 8, 9, 21, 23, 26, 35, 48, 49, 54, 67, 89, 99]
n = 49
def binarySearch(lst, n, left, right):
if left <= right:
mid = (left + right)//2
if n < lst[mid]:
right = mid - 1
elif n > lst[mid]:
left = mid + 1
else:
return "找到了,索引为:%d" % mid
return binarySearch(lst, n, left, right)
else:
print("没找到.")
return -1

ret = binarySearch(lst, n, 0, len(lst)-1)
print(ret)

猜你喜欢

转载自www.cnblogs.com/lilyxiaoyy/p/10782946.html