第一种:利用while循环实现
1 lst=[11,22,33,44,55,66,77,88,99,109,113,118,135,168] 2 n=int(input("请输入需要查找的数:")) 3 left=0 4 right=len(lst)-1 5 count=1 6 while left<=right: 7 middle=(left+right)//2 8 if n>lst[middle]: 9 left=middle+1 10 elif n<lst[middle]: 11 right=middle-1 12 else: 13 print("第%d次后找到了!" % count) 14 print("已找到") 15 print(middle) 16 break 17 count=count+1 18 else: 19 print("不存在")
第二种:利用普通函数实现
1 def binarySearch(lis, num): 2 left = 0 3 right = len(lis) - 1 4 while left <= right: 5 mid = (left + right) // 2 6 if num < lis[mid]: 7 right = mid - 1 8 elif num > lis[mid]: 9 left = mid + 1 10 else: 11 return mid 12 return -1
第三种:利用递归函数实现
1 def binary_search(lis,left,right,num): 2 if left>right: #递归结束条件 3 return -1 4 mid=(left+right)//2 5 if num>lis[mid]: 6 left=mid+1 7 elif num<lis[mid]: 8 right=mid-1 9 else: 10 return mid 11 return binary_search(lis,left,right,num)