1. 程式人生 > >二分法查詢演算法的實現

二分法查詢演算法的實現

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