二分法查找算法的实现

第一种:利用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)

猜你喜欢

转载自www.cnblogs.com/min-R/p/10200787.html