原理:所谓的“二分法”是通过获取列表的中间位置后,根据中间位置来进行判断需要查找的数字的大小在左边还是右边,然后继续判断
注意:数列必须是有序数列
下面参看代码:
def erfen(sums, key):
start = 0
end = len(sums)-1
if key in sums:
while True:
center = int((start+end)/2)
if sums[center] > key:
end = center-1
elif sums[center] < key:
start = center+1
elif sums[center] == key:
print(str(key)+'在数组里面的第'+str(center)+'个位置')
return sums[center]
else:
print('该数字不在列表中,请重新输入!')
if __name__ == "__main__":
sums = [1, 6, 9, 12, 14, 16, 18, 23, 26, 28, 30, 32, 34, 36, 41, 45,
47, 53, 56, 98]
while True:
key = input('请输入列表中要查找的数字:')
if key == '':
print('谢谢使用')
break
else:
erfen(sums, int(key))
下面数运行结果:
请输入列表中要查找的数字:6
6在数组里面的第1个位置
请输入列表中要查找的数字:18
18在数组里面的第6个位置
请输入列表中要查找的数字:53
53在数组里面的第17个位置
请输入列表中要查找的数字:43
该数字不在列表中,请重新输入!
请输入列表中要查找的数字:
谢谢使用