问题:使用二分法的方式在列表中寻找指定的数据
代码:
'''
使用二分法在有序列表中找出指定的值
'''
def BinarySearch(arr, key):
# 记录数组的最高位和最低位
min = 0
max = len(arr) - 1
if key in arr:
# 建立一个死循环,知道找到key
while True:
# 得到中位数
center = int((min + max) / 2)
# key在数组左边
if arr[center] > key:
max = center - 1
# key在数组右边
elif arr[center] < key:
min=center+1
#key在数组中间
elif arr[center]==key:
print(str(key) + '在数组里面的第' + str(center) + '个位置')
return arr[center]
else:
print('没有该数字!')
if __name__ == '__main__':
arr = [1, 6, 9, 15, 26, 38, 49, 57, 63, 77, 81, 93]
while True:
key = input('请输入你要查找的数字:')
if key == ' ':
print('谢谢使用!')
break
else:
BinarySearch(arr, int(key))
运行结果:
请输入你要查找的数字:63
63在数组里面的第8个位置 | 留言与评论(共有 0 条评论) “” |