二分法算法原理:数组是有序数组,
确定该期间的中间位置center
将查找的值key与array[center]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。
新区域的确定:如果key>arrey[center],则起始位置变为center+1,结束位置不变
如果key<arrey[center],则结束位置变为center-1,起始位置不变
每一次查找与中间值比较,可以确定是否查找成功,不成功当前查找区间缩小一半。递归找,即可。
以下为代码请参考:
1 def binarysearch(arr,key):
2 start=03 end=len(arr)-1
4 if key in arr:
5 while True:
6 center = int((start+end)/2)
7 if arr[center] > key:
8 end = center-1
9 elif arr[center] < key:
10 start = center+1
11 elif arr[center] == key:
12 print(str(key)+'在数组里面的第'+str(center)+' 个位置')
13 return arr[center]
14
15 else:
16 print('没有该数字')
17
18 if __name__ == "__main__":
19 arr = [1,6,9,12,14,16,18,23,26,34,56,765]
20 while True:
21 key = input('请输入要查找的数字:')
22 if key == '':
23 print('谢谢使用')
24 break
25 else:
26 binarysearch(arr,int(key))
27